设计模式-策略模式

给你一囗甜甜゛ 提交于 2019-12-05 09:34:21
  1. 定义: Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from the clients that use it. (定义一组算法, 将每个算法都封装起来, 并且使它们之间可以互换. 策略模式使得算法可以独立于客户端变化.)

  2. 类图:

    [UML 类图]

  3. UML 类图分析: Context 叫做上下文, 起承上启下的封装作用, 屏蔽客户端对策略算法的直接访问, 客户端只需要调用 Context#operation() 方法即可调用底层的策略方法. Strategy 为策略接口, 声明策略算法方法, 具体策略需要实现 Strategy 接口, 如 ConcretedStrategyA, ConcretedStrategyB.

  4. 策略模式的应用: javax.servlet.http.HttpServlet#service() 方法, java.util.Comparator#compare() 方法, javax.servlet.Filter#doFilter() 方法

  5. 策略模式的不足: 增加新的策略就需要增加新的类, 策略类需要对外暴露, 客户端需要知道具体策略的存在.

  6. 策略模式的改进: 可以在 Context 类中使用简单工厂模式来完成对具体策略的创建, 这样客户端就不需要知道具体有哪些类型的策略了.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!