Use*_*er3 5 java design-patterns
我从这里开始关注战略模式的一个例子
教程中的所有内容都很清楚但是:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
因此Context类在其构造函数中需要一个Strategy参数.
战略的定义是:
public interface Strategy {
public int doOperation(int num1, int num2);
}
Run Code Online (Sandbox Code Playgroud)
上面是一个接口,Context Class需要一个Strategy类型的对象.在StrategyPatternDemo类中,我们执行以下操作:
public class StrategyPatternDemo {
public static void main(String[] args) {
Context context = new Context(new OperationAdd());
System.out.println("10 + 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationSubstract());
System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationMultiply());
System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
}
}
Run Code Online (Sandbox Code Playgroud)
我完全感到困惑,因为我们无法根据定义初始化接口:
接口在几个方面与类不同,包括:
您无法实例化接口.
这究竟是Context context = new Context(new OperationAdd());作为一个参数发送的public Context(Strategy strategy){
this.strategy = strategy;
}
OperationAdd这些类OperationSubstract都OperationMultiply实现了该接口Strategy。因此,这些类的实例可以传递到Context需要类型对象的构造函数中Strategy。
由于OperationAdd、OperationSubstract和OperationMultiply实现接口Strategy,它们都是该类型。
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |