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

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

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

    策略模式类图:

    实现方式:

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

    代码实现:

    策略模式的设计原则:

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

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

      Favor composition over inheritance

    策略模式的优缺点:

      优点:

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

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

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

      缺点:

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

        增加了对象的数目

    策略模式的适用场景:

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

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

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

     

  • 相关阅读:
    bzoj 2742(树状数组)
    [网络流24题(3/24)] 最长k可重区间集问题(洛谷P3358)
    bzoj 1087(状压dp)
    算法模板整理V1.0
    ACM资料汇总
    算法笔记
    NC20861 兔子的逆序对(数学基础)
    zzuli新生周赛第四周题解
    Gym 102028E Resistors in Parallel(大数)
    HDU 3974 Assign the task(dfs序建线段树)
  • 原文地址:https://www.cnblogs.com/LionheartCGJ/p/6883769.html
Copyright © 2011-2022 走看看