Это шаблон и если да, как его зовут? - PullRequest
1 голос
/ 10 ноября 2011

Как мне назвать этот «WorkDistribtor»? Это похоже на шаблон, но я не могу сказать, что это такое.

interface IWorker
{
    void Do();
}

class WorkerOne: IWorker 
{
    public void Do() {...}
}

class WorkerTwo: IWorker 
{
    public void Do() {...}
}

// ...

Вместо того, чтобы использовать одного конкретного работника для выполнения () работы, я представляю косвенное указание, которое решает, какой фактический работник должен выполнять эту работу. Это косвенное обращение реализует тот же интерфейс, что и Worker, но фактически не выполняет работу, а делегирует ее.

class WorkDistributor: IWorker
{
    private _workerOne = new WorkerOne();
    private _workerTwo = new WorkerTwo();
    //...

    //delegate work to the different workers
    //depending on some conditions
    public void Do()
    {
      if (whateverCondition)
      {
          _workerOne.Do();
      }

      if (anotherCondition)
      {
          _workerTwo.Do();
      }
    }

}

Ответы [ 4 ]

1 голос
/ 14 ноября 2011

Скорее всего, это похоже на шаблон Strategy (также известный как шаблон политики):

http://en.wikipedia.org/wiki/Strategy_pattern

, где вы фактически разрешаете каждой конкретной реализации определять различное поведение в зависимости от контекста, и алгоритмы могут быть выбраны во время выполнения с использованием вашего класса селектора (тот, который определяет фактический контекст).

0 голосов
/ 15 ноября 2011

Я знаю это как абстрактный шаблон фабрики

Абстрактная фабрика в Википедии

0 голосов
/ 10 ноября 2011

А как насчет дублирования этого паттерна "косвенность"? ; -)

0 голосов
/ 10 ноября 2011

Это универсально называется Шаблон интерфейса : P

...