策略模式(Strategy Pattern)

策略模式(Strategy Pattern)

一个例子

策略模式中的角色

  • Strategy,该角色是一个接口,负责决定实现策略所必须得功能。
  • ConcreteStrategy,具体的策略,实现了Strategy接口,可以分别实现不同的策略、方法、算法等等。
  • Context上下文角色,用于保存ConcreteStrategy角色的具体实例,并且进行使用。在上述例子中,是Player

策略模式的类图

策略模式的特点

  • 策略模式也是一种委托模式,委托模式是一种弱关联,这种弱关联可以很方便的整体替换算法。
  • 策略模式可以再程序的运行中替换策略,从而替换整体算法。

相关的设计模式

  • 享元模式(Flyweight), 享元模式可以让很多个地方共用ConcreteStrategy角色。

  • 抽象工厂模式(Abstract Factory)模式和策略模式有一定的相似性,不过一个是替换算法,一个是整体替换生产的产品。

  • 状态模式(State)和策略模式都可以替换被委托的对象,而且之间的关系也很相似。

    • 在策略模式中,ConcreteStrategy角色表示的时被替换的算法,只有在必要的时候才需要替换。
    • 在状态模式中,ConcreteState角色表示的是具体的状态,该状类会随着被替换的状态而变化。

策略模式(Strategy Pattern)

https://www.borgor.cn/posts/5db9b4b7.html

作者

Cyrusky

发布于

2024-08-19

更新于

2024-11-18

许可协议

评论