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