策略模式-Strategy

Posted LionheartCGJ

tags:

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

策略模式:它将可变的部分从程序中抽象分离成算法接口,在该接口下分别封装一系列算法实现。

  它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到实用算法的客户。

策略模式类图:

实现方式:

  1. 分离变化得到策略接口strategy
  2. 编写strategy的具体实现类
  3. 将srategy聚合到使用策略的类中
  4. 根据具体的场景传入stratugy的不同实现

代码实现:

策略模式的设计原则:

  找出应用中需要变化的部分,把他们独立出来,不要和那些不需要变化的代码混在一起。(封装变化)

  面向接口,而不是面向编程实现

  Favor composition over inheritance

策略模式的优缺点:

  优点:

    使用了聚合的方式,使架构更加灵活

    富有弹性,可以较好的应对变化(开闭原则)

    更好的代码复用性(相对于继承)

  缺点:

    客户端代码需要了解每个策略的实现细节

    增加了对象的数目

策略模式的适用场景:

  许多相关的类仅仅是行为差异

  运行时选取不同的算法变体

  通过条件在多个分支中选取一

 

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

策略模式(strategy)

策略模式(Strategy)

设计模式 之 策略(Strategy)模式

策略模式(Strategy)

C#设计模式-策略者模式(Strategy)

策略模式(strategy)