- 定义:定义一组算法,将每个算法封装起来,并且使它们之间可互换。
- 容器类Context包含一个抽象策略Strategy类,和一个方法(此方法中再执行Strategy某方法)。Client类实例一个容器类(同时通过构造方法将此容器实例所包含的具体策略实例化)
- 代码:
public abstract class Strategy{
public Strategy(){
System.out.println("Strategy的构造方法执行!");
}
public abstract void operate();
}
public class StrategyA extends Strategy{
public StrategyA(){
System.out.println("StrategyA的构造方法执行!");
}
public void operate(){
System.out.println("策略A的方法开始执行!");
}
}
public class StrategyB extends Strategy{
public StrategyB(){
System.out.println("StrategyB的构造方法执行!");
}
public void operate(){
System.out.println("策略B的方法开始执行!");
}
}
/* 存储策略的容器类
* 容器类要实现一个方法,在此方法中调用其所包含的具体策略的方法*/
public class Context {
Strategy myStrategy;
public Context(Strategy strategy) {
System.out.println("Context的构造方法执行!");
myStrategy = strategy;
}
public void myOperate(){
myStrategy.operate();
}
}
public class Client {
public static void main(String[] args){
Context ctx1 = new Context(new StrategyA());
ctx1.myOperate();
Context ctx2 = new Context(new StrategyB());
ctx2.myOperate();
}
}