2011-11-10 113 views
1

如何命名這個「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(); 
     } 
    } 

} 

回答

0

這被普遍稱爲接口模式:P

0

關於配音的 「間接尋址」 模式是什麼? ;-)

1

它看起來最有可能像Strategy模式(又稱政策模式):

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

,你實際上允許根據上下文每個具體實現方式定義不同的行爲,可以在運行時使用您的選擇器類(定義實際上下文的類)選擇算法。

+0

的WorkDistributor決定上運行何種策略(工人)的使用,但它通過實現相同的接口,隱藏了這一事實對於外界(客戶端)策略本身(提供Do()方法)。因此,客戶可以使用具體策略(即特定工作人員)或WorkDistrubutor。這可以通過依賴注入很好地設置。這仍然是戰略模式嗎? – Stefan

相關問題