Design patterns 这是一种模式吗?如果是,它的名称是什么?
我如何命名这个“WorkDistributor”?这看起来像一个模式,但我不能说它是什么Design patterns 这是一种模式吗?如果是,它的名称是什么?,design-patterns,Design Patterns,我如何命名这个“WorkDistributor”?这看起来像一个模式,但我不能说它是什么 interface IWorker { void Do(); } class WorkerOne: IWorker { public void Do() {...} } class WorkerTwo: IWorker { public void Do() {...} } // ... 我没有使用一个特定的工作者来做这个工作,而是引入了一个间接方法来决定哪个实际工作者应该
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();
}
}
}
这被普遍称为接口模式:p这被普遍称为接口模式:p把它称为“间接”模式怎么样?;-) 把它称为“间接”模式怎么样?;-) 它看起来最像是
策略
模式(也称为策略模式):
实际上,您允许每个特定的实现根据上下文定义不同的行为,并且可以在运行时使用选择器类(定义实际上下文的类)选择算法。它很可能类似于
策略模式(也称为策略模式):
实际上,您允许每个特定的实现根据上下文定义不同的行为,并且可以在运行时使用选择器类(定义实际上下文的类)选择算法。我将其称为抽象工厂模式
我知道它是抽象工厂模式
WorkDistributor在运行时决定使用什么策略(worker),但它通过实现与策略本身相同的接口(提供Do()方法),为外部世界(客户端)隐藏了这一事实。因此,客户可以使用具体的策略(即特定的员工)或WorkDistrubutor。这可以通过依赖项注入很好地设置。这仍然是策略模式吗?WorkDistributor在运行时决定使用什么策略(worker),但它通过实现与策略本身相同的接口(提供Do()方法),为外部世界(客户端)隐藏了这一事实。因此,客户可以使用具体的策略(即特定的员工)或WorkDistrubutor。这可以通过依赖项注入很好地设置。这仍然是战略模式吗?