Использование интерфейса ICommand - PullRequest
0 голосов
/ 25 мая 2011

У меня есть класс, который реализует определенный интерфейс (IOrganicEnvironment<T, K>)

public class Colorizator : IOrganicEnvironment<Cell<YUV>, YUV>, ICommand
{
    // ..
}

А также реализует интерфейс ICommand

public interface ICommand
{
    void Execute();
}
Интерфейс

IOrganicEnvironment<T, K> предоставляет набор методов и свойств, которые я в основном собираюсь использовать внутри метода ICommand Execute().

Но мне не нужен клиентский код для вызова этих методов и свойств из экземпляра Colorizator.

Что я могу / должен сделать? Если я реализую интерфейс explicitly и сделаю его internal, это поможет?

1 Ответ

2 голосов
/ 25 мая 2011

Я думаю, что лучше использовать композицию.

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;
    }
}
...