Как мне назвать этот «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();
}
}
}