设计模式读书笔记-策略模式

2016-08-21
读书笔记
  • 定义:定义一组算法,将每个算法封装起来,并且使它们之间可互换。
  • 容器类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();
    }
}

Kommentare: