策略模式-大道至简

文章目录

摆个类图

在这里插入图片描述

本质

  1. 定义一个标准策略接口Strategy,这个接口中声明一个场景下应该使用的策略(执行的逻辑)。随后具体的执行器(具体的场景)应当实现这个接口,并实现自己的策略执行逻辑。
  2. 为了方便调用,一般会额外编写一个Context(可以理解成再次使用了一次工厂模式)对外隐藏具体策略的调用逻辑,而这里一般是维护一个Strategy集合,在参数进入时进行匹配(无论是维护List在每次进入时使用for进行匹配,还是Map进行get,本质都一样)
  3. 关于其场景与策略的映射关系的维护:通常会维护一个枚举,并在具体策略实现时进行配置,实现方式通常有如下两种
    1. 在Strategy接口中额外生命一个getStrategyType方法,用于对外暴露相应的策略枚举
    2. 首先使用一个抽象类AbstractStrategy,并维护一个strategyType属性,再在每个子类继承时进行重写
    3. (一般建议使用第一个方式,毕竟第二个方式不是强约束,有可能出现漏写而造成错误)

相关推荐

  1. 策略模式(极c++)》

    2023-12-12 06:26:05       14 阅读
  2. 模版模式(极c++)》

    2023-12-12 06:26:05       11 阅读
  3. ·策略模式

    2023-12-12 06:26:05       35 阅读
  4. 策略模式

    2023-12-12 06:26:05       17 阅读
  5. 《工厂模式(极c++)》

    2023-12-12 06:26:05       19 阅读
  6. 《原型模式(极c++)》

    2023-12-12 06:26:05       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 06:26:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 06:26:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 06:26:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 06:26:05       18 阅读

热门阅读

  1. 《C++新经典设计模式》之第9章 命令模式

    2023-12-12 06:26:05       37 阅读
  2. git 分支合并

    2023-12-12 06:26:05       41 阅读
  3. 在Arch Linux上安装yay

    2023-12-12 06:26:05       38 阅读
  4. Scala学习一:语法基础/数据类型/变量

    2023-12-12 06:26:05       40 阅读
  5. Spring Boot中JdbcTemplate多数据源配置

    2023-12-12 06:26:05       40 阅读
  6. Jenkins:持续集成与持续交付的自动化利器

    2023-12-12 06:26:05       38 阅读
  7. 运筹学经典问题(一):指派问题

    2023-12-12 06:26:05       35 阅读
  8. 字符串相似度计算:Jaro-Winkler算法实现

    2023-12-12 06:26:05       43 阅读
  9. Docker笔记:Docker中简单配置Mysql/Redis/Mongodb容器

    2023-12-12 06:26:05       38 阅读