22.策略模式

Posted zhongj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了22.策略模式相关的知识,希望对你有一定的参考价值。

  • 一、角色
    • 环境类(Context):对策略进行管理
    • 抽象策略类(Strategy):所有策略类的抽象接口
    • 具体策略类(ConcreteStrategy):具体策略实现类
  • 二、适用场景
    • 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为
    • 一个系统需要动态地在几种算法中选择一种
    • 如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现
    • 不希望客户端知道复杂的、与算法相关的数据结构,在具体策略类中封装算法和相关的数据结构,提高算法的保密性与安全性
  • 三、实例
    • 图1是一个两个整数运算的实例,不同的策略对应了两个数字不同的运算方式(例如加减乘除),Strategy是抽象策略类角色(这里用JAVA接口实现),OperationAdd、OperationSubstract、OperationMultiply为具体策略类,分别实现两个整数的加减乘操作,Context则是环境类,可以用来设置当前策略和调用具体策略的算法
    • 代码地址:https://github.com/lanhei/DesignPattern/tree/master/src/com/lanhei/patterns/strategy
      技术图片
      图-1

以上是关于22.策略模式的主要内容,如果未能解决你的问题,请参考以下文章

Java描述设计模式(22):策略模式

22-策略(Strategy)模式Ruby实现

在策略模式中使用带有自定义属性的 bgl dijsktra 代码

设计模式—策略模式

设计模式---策略模式

策略模式(Strategy Pattern)