这篇文章是针对设计模式中的策略模式的学习笔记。
策略模式(Strategy Pattern)
基本
策略模式定义了算法家族,分别封装起来,让它们之间可以相互替换,且算法的变化不会影响使用到算法的客户。完美结合了开闭原则,封装变化。行为型模式。
code
微软公司提供的演示项目PetShop 4.0中就使用策略模式来处理同步订单和异步订单的问题。
下面是商场收银优惠方案demo的策略模式uml图:
code
特点
优点
- 策略模式的Strategy类层次为Context定义了一系列可复用的算法或行为。继承有助于解析算法的公共功能。
- 简化了单元测试,每个算法都有自己的类,可以通过自己的接口单独测试。
缺点 - 客户端必须知道所有策略类,并自行决定使用哪一个策略类。
- 产生大量的策略类。
总结
策略模式用于算法的自由切换与扩展,只要涉及到算法的封装、复用、切换都可以考虑策略模式。