策略模式-Strategy

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

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

策略模式类图:

实现方式:

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

代码实现:

策略模式的设计原则:

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

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

  Favor composition over inheritance

策略模式的优缺点:

  优点:

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

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

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

  缺点:

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

    增加了对象的数目

策略模式的适用场景:

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

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

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

 

原文地址:https://www.cnblogs.com/LionheartCGJ/p/6883769.html