策略模式-大道至简

文章目录

摆个类图

本质

  1. 定义一个标准策略接口Strategy,这个接口中声明一个场景下应该使用的策略(执行的逻辑)。随后具体的执行器(具体的场景)应当实现这个接口,并实现自己的策略执行逻辑。
  2. 为了方便调用,一般会额外编写一个Context(可以理解成再次使用了一次工厂模式)对外隐藏具体策略的调用逻辑,而这里一般是维护一个Strategy集合,在参数进入时进行匹配(无论是维护List在每次进入时使用for进行匹配,还是Map进行get,本质都一样)
  3. 关于其场景与策略的映射关系的维护:通常会维护一个枚举,并在具体策略实现时进行配置,实现方式通常有如下两种
    1. 在Strategy接口中额外生命一个getStrategyType方法,用于对外暴露相应的策略枚举
    2. 首先使用一个抽象类AbstractStrategy,并维护一个strategyType属性,再在每个子类继承时进行重写
    3. (一般建议使用第一个方式,毕竟第二个方式不是强约束,有可能出现漏写而造成错误)
相关推荐
原来是猿1 天前
线程安全的单例模式
linux·服务器·开发语言·单例模式·策略模式
Mr_linjw2 天前
策略模式简介
策略模式
故乡de云2 天前
Cursor + Claude Code 接入 API 实战:国内稳定使用 Claude 4.7 配置全攻略
大模型·ai编程·策略模式·claude·cursor·claude code
原来是猿3 天前
Linux线程同步与互斥(四):日志系统与策略模式
linux·运维·开发语言·策略模式
许国栋_4 天前
ESG驱动下的产品战略调整:企业该如何从合规走向竞争力重构?
安全·产品运营·产品经理·策略模式
周末也要写八哥4 天前
策略模式的思想的经典案例分析
策略模式
AC赳赳老秦4 天前
OpenClaw与Excel联动:批量读取/写入数据,生成可视化报表
开发语言·python·excel·产品经理·策略模式·deepseek·openclaw
lwf0061645 天前
解决macOS .dmg 文件无法安装问题
macos·策略模式
草莓熊Lotso6 天前
手搓工业级 C++ 线程安全日志系统:基于策略模式解耦,兼容 glog 使用风格
linux·运维·服务器·数据库·c++·安全·策略模式
蜜汁小强7 天前
macOS 开发者的 tmux 实战配置:分屏导航、vi 复制模式与系统剪贴板一站打通
macos·策略模式