//公共类
public abstract class Strategy {
public abstract void AlgorithInterface();
}
//策略A
public class ContreteStrategyA extends Strategy {
@Override
public void AlgorithInterface() {
// TODO Auto-generated method stub
System.out.println("算法A实现");
}
}
...
//配置类,维护对strategy引用
public class Context {
Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
//接口
public void ContextInterface(){
strategy.AlgorithInterface();
}
}
//主类
public static void main(String[] args) {
// TODO Auto-generated method stub
//配置类
Context context;
//不同策略
context = new Context(new ContreteStrategyA());
context.ContextInterface();
context = new Context(new ContreteStrategyB());
context.ContextInterface();
context = new Context(new ContreteStrategyC());
context.ContextInterface();
}
1、基础类,定义为abstract类,内有抽象方法;
2、各种策略,继承基础类;
3、配置类,定义为基础类,成员方法为对应策略,接口定义引用基础类抽象方法。
4、主类,定义配置类,初始化策略,调用接口