策略模式-大道至简

文章目录

摆个类图

本质

  1. 定义一个标准策略接口Strategy,这个接口中声明一个场景下应该使用的策略(执行的逻辑)。随后具体的执行器(具体的场景)应当实现这个接口,并实现自己的策略执行逻辑。
  2. 为了方便调用,一般会额外编写一个Context(可以理解成再次使用了一次工厂模式)对外隐藏具体策略的调用逻辑,而这里一般是维护一个Strategy集合,在参数进入时进行匹配(无论是维护List在每次进入时使用for进行匹配,还是Map进行get,本质都一样)
  3. 关于其场景与策略的映射关系的维护:通常会维护一个枚举,并在具体策略实现时进行配置,实现方式通常有如下两种
    1. 在Strategy接口中额外生命一个getStrategyType方法,用于对外暴露相应的策略枚举
    2. 首先使用一个抽象类AbstractStrategy,并维护一个strategyType属性,再在每个子类继承时进行重写
    3. (一般建议使用第一个方式,毕竟第二个方式不是强约束,有可能出现漏写而造成错误)
相关推荐
小小寂寞的城5 小时前
JAVA策略模式demo【设计模式系列】
java·设计模式·策略模式
来自宇宙的曹先生11 小时前
使用策略模式 + 自动注册机制来构建旅游点评系统的搜索模块
旅游·策略模式
花好月圆春祺夏安2 天前
基于odoo17的设计模式详解---策略模式
设计模式·策略模式
佛祖让我来巡山3 天前
【工厂和策略设计模式妙用】解决接口选择与多重if-else 问题
设计模式·策略模式·工厂模式
刘某某.4 天前
使用工厂模式和策略模式实现布隆过滤器
策略模式
牛奶咖啡137 天前
学习设计模式《十六》——策略模式
学习·设计模式·策略模式·认识策略模式·策略模式的优缺点·何时选用策略模式·策略模式的使用示例
勤奋的知更鸟7 天前
Java 编程之策略模式详解
java·设计模式·策略模式
FreeBuf_7 天前
朝鲜APT组织使用Nim语言恶意软件对macOS发起隐秘Web3与加密货币攻击
macos·web3·策略模式
暮乘白帝过重山7 天前
设计模式篇:灵活多变的策略模式
设计模式·策略模式
GodKeyNet7 天前
设计模式-策略模式
设计模式·策略模式