策略模式:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。
结构图:
定义一个策略的接口:
public interface Strategy {
//算法方法
public void AlgorithmInterface();
}
策略A:
public class StrategyA implements Strategy{
@Override
public void AlgorithmInterface() {
System.out.println("算法A");
}
}
策略B:
public class StrategyB implements Strategy{
@Override
public void AlgorithmInterface() {
System.out.println("算法B");
}
}
策略C:
public class StrategyC implements Strategy{
@Override
public void AlgorithmInterface() {
System.out.println("算法C");
}
}
定义一个类,用来装策略的
public class Context {
Strategy strategy; //策略接口
public Context(Strategy strategy){
this.strategy = strategy;
}
//上下文接口
public void ContextInterface()
{
strategy.AlgorithmInterface();
}
}
测试类:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Context context ;
context = new Context(new StrategyA());
context.ContextInterface();
context = new Context(new StrategyB());
context.ContextInterface();
context = new Context(new StrategyC());
context.ContextInterface();
}
}
输出结果:
算法A
算法B
算法C