zoukankan      html  css  js  c++  java
  • 策略模式

    转载:策略模式

    混合模式

    UNL类图

    • Context向外暴露使用策略的接口,设置使用哪一个策略。

    • Strategy策略基类,所有的策略类都继承自该类

    • ConcreteStrategyA、ConcreteStrategyB具体的策略类,用来实现具体的解决方案。

    适用场合

    适合于一个问题有多种解决方案。比如排序时可以选择快排,堆排,冒泡,选择,插入等。主要解决if...else带来的复杂和难以维护。

    关键代码实现同一个接口

    注意事项

    如果一个系统策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题。

    应用实例:

    • 诸葛亮的锦囊妙计,每一个锦囊就是一个策略

    • 出行方式,自行车,汽车,步行,每一种出行方式都是一个策略。

    • 常见的鸭子策略模式:每一个具体的鸭子是一种策略,每种鸭子都有不同的表现形式(飞行高度,叫声大小等等)。

    优缺点:

    优点

    • 策略可以自由切换,

    • 避免使用多重条件判断(if...else)

    • 扩展性好

    缺点

    • 策略类会很多

    • 所有策略类都需要对外暴露

  • 相关阅读:
    ACM HDU 1176 免费馅饼(DP)
    PHP下载时中文文件名乱码的问题
    NYOJ 27
    NYOJ 148
    NYOJ 8
    NYOJ 138
    NYOJ 461
    POJ 1200
    STL排序算法
    NYOJ 523
  • 原文地址:https://www.cnblogs.com/mmmmmmmmm/p/15093268.html
Copyright © 2011-2022 走看看