2011-11-10 9 views
1

この「WorkDistribtor」とはどのようにして指定しますか?これはパターンのように見えますが、私はそれが何であるか言うことはできません。代わりに)(私は、実際の労働者が仕事をするべきかを決定する間接を導入しています仕事をするためにある特定の労働者を使用してのこれはパターンなのですか?はいの場合、その名前は何ですか?

interface IWorker 
{ 
    void Do(); 
} 

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

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

// ... 

。このインダイレクションは、ワーカーと同じインターフェースを実装しますが、実際には作業はしませんが、委任します。

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(); 
     } 
    } 

} 

答えて

0

これは普遍的Interfaceパターンと呼ばれている:P

0

何が "間接" のパターンダビングについてはどうですか? ;-)

それは(また、ポリシーパターンとして知られている) Strategyパターンのように見える可能性が高い
1

あなたが実際にそれぞれの具体的な実装は、コンテキストに応じて異なる動作を定義することができ

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

、およびセレクタクラス(実際のコンテキストを定義するクラス)を使用して、実行時にアルゴリズムを選択することができます。

+0

Abstract Factoryパターンとしてそれを知っています戦略そのもの(Do()メソッドの提供)したがって、クライアントは具体的な戦略(特定の作業者)またはWorkDistrubutorを使用することがあります。これは依存性注入によってうまく設定できます。これはまだ戦略パターンですか? – Stefan

0

私はWorkDistributorを使用するかを戦略(労働者)のランタイムを決定するが、それは同じインタフェースを実装することで、外の世界(クライアント)のために、この事実を隠し

Abstract Factory on Wikipedia

関連する問題