设计模式学习笔记(十三) 策略模式

该篇主要说明的是策略模式。

定义

定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。
策略模式也叫做政策模式。

角色

Context封装角色

封装可能变化的存在。

Strategy抽象策略角色

策略、算法家族的抽象。通常为接口。

ConcreteStrategy具体策略角色

实现抽象策略中的操作,该类含有具体的算法。

代码

抽象的策略角色
public interface Strategy {

    void doSomething();

}
具体的策略角色
public class ConcreteStrategy01 implements Strategy {
    @Override
    public void doSomething() {
        System.out.println("01");
    }
}
封装角色
public class Context {

    private Strategy strategy = null;

    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    public void doAnything(){
        this.strategy.doSomething();
    }
}

注意:策略模式借用了代理模式的思路,不同的是,策略模式的封装角色和被封装的策略类不用的是同一个接口,如果是同一个接口,则是代理模式。

策略模式优缺点

优点
  1. 算法可以自由切换
  2. 避免使用多重条件判断
  3. 扩展性良好
缺点
  1. 策略类数量增多
  2. 所有的策略类都需要对外暴露

猜你喜欢

转载自blog.csdn.net/dulei17816/article/details/80667114
今日推荐