使用ICommand接口

使用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这将有助于?

+1

只是为了澄清:所有的客户端应该关心的是ICommand的实现,而不是IOrganicEnvironment ?如果是这样的话,似乎有些代码(尽管可能不是“客户端”)需要知道它满足IOrganicEnvironment - 能否告诉我们更多关于此的信息?无论如何,显式的接口实现可能会帮助你,正如你所想的那样。我想知道的另一件事是,如果这真的是实施ICommand的正确层面 - 看起来好像比简单的DTO层更深。 – 2011-05-25 06:00:12

我认为使用组合会是更好的主意。

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