什么时候使用策略模式?
我看到这样的客户端代码片段:
class StrategyExample {
public static void main(String[] args) {
Context context;
// Three contexts following different strategies
context = new Context(new ConcreteStrategyAdd());
int resultA = context.executeStrategy(3,4);
context = new Context(new ConcreteStrategySubtract());
int resultB = context.executeStrategy(3,4);
context = new Context(new ConcreteStrategyMultiply());
int resultC = context.executeStrategy(3,4);
}
}
看起来您可以将其重构为:
class StrategyExample {
public static void main(String[] args) {
// Three contexts following different strategies
int resultA =new ConcreteStrategyAdd().execute(3,4);
int resultB =new ConcreteStrategySubtract().execute(3,4);
int resultC =new ConcreteStrategyMultiply().execute(3,4);
}
}
第一部分代码直接取自维基百科页面。一个很大的区别是上下文消失了,但无论如何它在示例中没有做任何事情。也许有人有一个更好的例子来说明策略是有意义的。我通常喜欢设计模式,但这似乎增加了复杂性而没有增加实用性。