05 Strategy策略模式(行为型)

版权声明:就是开个版权玩一下 https://blog.csdn.net/qq_41997479/article/details/86619100

05 Strategy(行为型)

    • 把可能变化的代码独立出来,不要和不变化的代码混在一起
      • 将变化的封装起来
    • 针对接口编程,而不是针对实现编程
    • 多用组合,少用继承,好处在于灵活性,运行时变化
    • 策略模式:也叫policy
      • 针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。客户决定使用哪个算法。
      • 什么时候来使用:
        • 许多相关类只在它们的行为上有所不同
        • 需要一个算法的不同变化的版本
        • 算法使用客户不应该知道的数据。使用策略模式,以避免暴露复杂的、特定于算法的数据结构。
        • 减少if语句
      • 满足的原则
        • 最小知识原则
          • 上下文和具体策略是松耦合关系。因此上下文只知道它要使用某一个实现Strategy接口类的实例,但不需要知道具体是哪一个类。
        • 开放封闭原则
          • 当增加新的具体策略时,不需要修改上下文类的代码,上下文就可以引用新的具体策略的实例
        • 依赖倒置原则

 

    • 好处
      • 子类可选择
      • 消除条件语句
    • 坏处
      • 增加客户使用难度
      • 通信会有负担
      • 增加对象数量
    • 扩展
      • 在上下文和策略间传递数据
      • 让策略可选择,加一个默认策略
    • 例:
      • 通过这种设计,其他类型的对象可以重用我们的fly和quack行为,因为这些行为不再隐藏在Duck类中!
      • 我们可以添加新的行为,而不需要修改任何现有的行为类或触摸任何使用飞行行为的鸭子类。

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_41997479/article/details/86619100
今日推荐