设计模式篇-运筹帷幄,决胜千里之外

这篇文章是针对设计模式中的策略模式的学习笔记。

策略模式(Strategy Pattern)

基本

策略模式定义了算法家族,分别封装起来,让它们之间可以相互替换,且算法的变化不会影响使用到算法的客户。完美结合了开闭原则,封装变化。行为型模式。

code

微软公司提供的演示项目PetShop 4.0中就使用策略模式来处理同步订单和异步订单的问题。
下面是商场收银优惠方案demo的策略模式uml图:

code

特点

优点

  • 策略模式的Strategy类层次为Context定义了一系列可复用的算法或行为。继承有助于解析算法的公共功能。
  • 简化了单元测试,每个算法都有自己的类,可以通过自己的接口单独测试。
    缺点
  • 客户端必须知道所有策略类,并自行决定使用哪一个策略类。
  • 产生大量的策略类。

总结

策略模式用于算法的自由切换与扩展,只要涉及到算法的封装、复用、切换都可以考虑策略模式。