使用ICommand接口
问题描述:
我有一个实现特定接口(IOrganicEnvironment<T, K>
)使用ICommand接口
public class Colorizator : IOrganicEnvironment<Cell<YUV>, YUV>, ICommand
{
// ..
}
类并且还实现了ICommand的iterface
public interface ICommand
{
void Execute();
}
IOrganicEnvironment<T, K>
接口提供了一系列的方法和属性我大多将在ICommand Execute()
方法内使用。
但我不需要任何客户端代码来调用Colorizator
实例中的方法和属性。
我可以做什么?如果我执行接口explicitly
并使其internal
这将有助于?
答
我认为使用组合会是更好的主意。
public class Colorizator : IOrganicEnvironment<Cell<YUV>, YUV>>
{
// normal code here
}
public class ColorizatorCommand : ICommand
{
private Colorizator _colorizator;
public ColorizatorCommand(Colorizator colorizator)
{
_colorizator = colorizator;
}
public void Execute()
{
//use _colorizator here;
}
}
+0
好的!我完全同意。谢谢) – lexeme 2011-05-25 06:33:17
只是为了澄清:所有的客户端应该关心的是ICommand的实现,而不是IOrganicEnvironment?如果是这样的话,似乎有些代码(尽管可能不是“客户端”)需要知道它满足IOrganicEnvironment - 能否告诉我们更多关于此的信息?无论如何,显式的接口实现可能会帮助你,正如你所想的那样。我想知道的另一件事是,如果这真的是实施ICommand的正确层面 - 看起来好像比简单的DTO层更深。 –
2011-05-25 06:00:12