• 设计模式之策略模式


        策略模式也是行为模式的一种。

        意图:定义一系列的算法,把它们一个一个封装起来,并使它们可以相互替换。本模式使得算法可以独立于使用它的客户而变化。
     
        场景:使用GOF中的场景来说明,许多算法可以对一个正文流换行,将这些算法硬编码到使用它的类中是不可取的,原因如下:
     
            1. 需要换行的客户程序如果直接包含换行代码的时候会很复杂,并使得客户程序复杂到难以维护,尤其是需要支持多种算法时情况会急剧恶化。
     
            2. 不同的时候需要不同的换行算法,我们不想支持我们不使用的算法。
     
            3. 当换行功能是客户程序一个难以分割的成分时,增加新的换行算法或改变已有的将会十分苦难。
     
        现在的解决方案就是定义一些类来封装这些算法,从而避免这个问题,一个封装算法成为一个策略。
     
        
     
        适用性:
     
            1. 许多相关类仅仅是行为有异
     
            2. 需要使用一个算法的不同变体
     
            3. 算法使用客户不应该知道的数据,如此可以避免暴漏数据
     
            4. 可以用来替代IF语句
     
        与状态模式的区别:
     
            状态模式与策略模式可以说是非常的类似,但其使用场景是不同的,状态模式针对的是存在状态转换的情况,而且对象的行为依赖于状态,并可以在其中加入状态管理的特性。
     
            策略模式偏重于算法实现,它关系的是算法配置。
     
        实际使用:
     
            在现有项目中没有找到策略模式的准确实现,但是找到了类似的使用场景:系统A需要从系统B上获取数据,可能会通过不同的接口,如Web接口,文件接口,API等,每种实现可以看做是策略的具体实现类,并在调用方根据需求调用,这种调用可以是硬编码,也可以根据相关逻辑使用反射来实现配置。
     
        

     

  • 相关阅读:
    Git修改用户名和提交的邮箱
    在vue项目中引入bootstrap
    自定义radio,使用图片进行切换(点击切换时,获取变量值)
    nodejs知识清单
    swoft源码研究
    Nginx变量查询
    mongodb索引
    mongodb数据备份:导入导出
    mongodb主从复制和分片
    mongodb服务安装
  • 原文地址:https://www.cnblogs.com/jiyuqi/p/4506265.html
Copyright © 2020-2023  润新知