【发布时间】:2016-01-13 02:48:47
【问题描述】:
我不明白为什么要在策略设计模式中使用上下文模块(我们将在下面的代码中看到),它的作用是什么?让我们看一下策略设计模式的一部分。
public interface Strategy {
public int doOperation(int num1, int num2);
}
public class OperationAdd implements Strategy {
@Override
public int doOperation(int num1, int num2) {
return num1 + num2;
}
}
public class OperationSubstract implements Strategy {
@Override
public int doOperation(int num1, int num2) {
return num1 - num2;
}
}
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public int executeStrategy(int num1, int num2) {
return strategy.doOperation(num1, num2);
}
}
从上面的代码中,我们可以这样调用不同的算法:
Context context = new Context(new OperationAdd());
context.executeStrategy(10,5);
我完全不能理解,为什么不能直接调用子类,而是使用上下文层。在我看来,就像这样:
Strategy addStrategy = new OperationAdd();
addStrategy.doOperation(10, 5);
【问题讨论】:
-
我还是不太明白。我认为 'new Context(new OperationAdd()).executeStrategy(10,5)' 和 'new OperationAdd().doOperation(10, 5)' 没有区别。
标签: java design-patterns strategy-pattern