策略模式

443 阅读1分钟

概念

提供一个接口,用该接口的不同的实现类封装一系列算法(策略),它们可以相互替换以满足不同的业务需求,在客户端就可以通过注入不同的实现对象来实现算法和策略的动态替换。优点是扩展方便,封装彻底;缺点是随着策略增加子类变多。

使用场景

  • 同一类型问题有多种处理方式
  • 同一抽象类有多个子类,且需要使用很多if-else选择时

实现方式

interface Strategy {
    void fun();
}

public class Strategy1 implements Strategy {
    public void fun(){
        // do something
    }
}

public class Strategy2 implements Strategy {
    public void fun(){
        // do something
    }
}

public class Test{
    Strategy mStrategy;
    public static void main(String[] args){
       Test t = new Test();
       t.setStrategy(new Strategy1());
       t.mStrategy.fun();
    }
    public void setStrategy(Strategy s){
        mStrategy = s;
    }

}