<<设计模式之禅(第二版)>>——第十八章 策略模式

定义:
  • 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。
通用类图:
策略模式通用类图
/*
 * 抽象的策略模式
 * */
public abstract class Strategy {
  abstract void doSomething();
}
/*
 * 定义具体的策咯模式
 * */
public class ConcreteStrategyOne extends Strategy {

  @Override
  void doSomething() {
    // TODO Auto-generated method stub

   }

}
public class ConcreteStrategyTwo extends Strategy {

  @Override
  void doSomething() {
    // TODO Auto-generated method stub

  }

}
/*
 * 定义上下文角色,用来封装对象
 * */
public class Context {
  private Strategy strategy;

  public Context(Strategy strategy) {
    // TODO Auto-generated constructor stub
    this.strategy = strategy;
  }

  public void doAnything() {
    this.strategy.doSomething();
  }
}
public class Client {
  public static void main(String[] args) {
    Strategy strategyOne = new ConcreteStrategyOne();
    Context context = new Context(strategyOne);
    context.doAnything();// 高层模块实现对底层算法模块细节的屏蔽
  }
}
优点:
  • 算法可以自由切换
  • 避免本身实现多重条件的判断,由外部条件决定当前应该使用哪一种算法
  • 拓展性良好
缺点:
  • 策略类数量增多
  • 所有的策略类都需要对外暴露
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 场景问题# 1.1 报价管理## 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的...
    七寸知架构阅读 5,133评论 9 62
  • 一、定义 策略模式(Strategy Pattern)是一种比较简单的模式,也叫做政策模式(Policy Patt...
    端木轩阅读 239评论 0 0
  • 1 场景问题 1.1 报价管理 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要...
    4e70992f13e7阅读 3,128评论 2 16
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,455评论 25 708
  • 佯装的所有坚强与乐观,在那一刻就完全溃不成军,说好的会快乐地分享自己在这的生活,可是……听到那熟悉的声音,心中所有...
    秋_半阅读 226评论 0 0