这是一种模式,如果是,它的名字是什么?

时间:2011-11-10 08:01:05

标签: design-patterns

如何命名此“WorkDistribtor”?这看起来像一个模式,但我不能说它是什么。

interface IWorker
{
    void Do();
}

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

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

// ...

我没有使用一个特定的工作人员来做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 个答案:

答案 0 :(得分:1)

看起来很可能像Strategy模式(也称为策略模式):

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

您实际上允许每个特定实现根据上下文定义不同的行为,并且可以使用您的选择器类(定义实际上下文的类)在运行时选择算法。

答案 1 :(得分:0)

这通常被称为接口模式:P

答案 2 :(得分:0)

将“间接”模式配音怎么样? ; - )

答案 3 :(得分:0)

我知道它是抽象工厂模式

Abstract Factory on Wikipedia