策略模式-大道至简

文章目录

摆个类图

本质

  1. 定义一个标准策略接口Strategy,这个接口中声明一个场景下应该使用的策略(执行的逻辑)。随后具体的执行器(具体的场景)应当实现这个接口,并实现自己的策略执行逻辑。
  2. 为了方便调用,一般会额外编写一个Context(可以理解成再次使用了一次工厂模式)对外隐藏具体策略的调用逻辑,而这里一般是维护一个Strategy集合,在参数进入时进行匹配(无论是维护List在每次进入时使用for进行匹配,还是Map进行get,本质都一样)
  3. 关于其场景与策略的映射关系的维护:通常会维护一个枚举,并在具体策略实现时进行配置,实现方式通常有如下两种
    1. 在Strategy接口中额外生命一个getStrategyType方法,用于对外暴露相应的策略枚举
    2. 首先使用一个抽象类AbstractStrategy,并维护一个strategyType属性,再在每个子类继承时进行重写
    3. (一般建议使用第一个方式,毕竟第二个方式不是强约束,有可能出现漏写而造成错误)
相关推荐
bkspiderx3 天前
C++设计模式之行为型模式:策略模式(Strategy)
c++·设计模式·策略模式
_Yoke5 天前
Java 枚举多态在系统中的实战演进:从枚举策略到自动注册
java·springboot·策略模式
笨手笨脚の6 天前
设计模式-策略模式
设计模式·策略模式·行为型设计模式
2501_915921436 天前
iOS 26 崩溃日志解析,新版系统下崩溃获取与诊断策略
android·ios·小程序·uni-app·cocoa·iphone·策略模式
liulilittle11 天前
macOS 内核路由表操作:直接 API 编程指南
网络·c++·macos·策略模式·路由·route·通信
青草地溪水旁12 天前
设计模式(C++)详解——策略模式(1)
c++·设计模式·策略模式
o0向阳而生0o12 天前
105、23种设计模式之策略模式(14/23)
设计模式·策略模式
青草地溪水旁12 天前
设计模式(C++)详解——策略模式(2)
c++·设计模式·策略模式
一勺菠萝丶14 天前
macOS 终端配置全攻略:zsh、bash_profile、zprofile、zshrc 到 nvm 配置的完整科普
macos·bash·策略模式
Miqiuha14 天前
设计模式之策略模式学习
学习·设计模式·策略模式