策略模式-大道至简

文章目录

摆个类图

本质

  1. 定义一个标准策略接口Strategy,这个接口中声明一个场景下应该使用的策略(执行的逻辑)。随后具体的执行器(具体的场景)应当实现这个接口,并实现自己的策略执行逻辑。
  2. 为了方便调用,一般会额外编写一个Context(可以理解成再次使用了一次工厂模式)对外隐藏具体策略的调用逻辑,而这里一般是维护一个Strategy集合,在参数进入时进行匹配(无论是维护List在每次进入时使用for进行匹配,还是Map进行get,本质都一样)
  3. 关于其场景与策略的映射关系的维护:通常会维护一个枚举,并在具体策略实现时进行配置,实现方式通常有如下两种
    1. 在Strategy接口中额外生命一个getStrategyType方法,用于对外暴露相应的策略枚举
    2. 首先使用一个抽象类AbstractStrategy,并维护一个strategyType属性,再在每个子类继承时进行重写
    3. (一般建议使用第一个方式,毕竟第二个方式不是强约束,有可能出现漏写而造成错误)
相关推荐
geovindu4 天前
java: Strategy Pattern
java·开发语言·后端·设计模式·策略模式·行为模式
geovindu5 天前
CSharp: Strategy Pattern
开发语言·后端·c#·.net·.netcore·策略模式·行为模式
沪上企服通7 天前
代账数据的可移植性设计:开放接口、账套导出与 exit strategy 工程笔记(上海 5 家样本对照)
笔记·策略模式
码匠许师傅7 天前
【设计模式精讲】26.策略模式(Strategy)
c++·设计模式·策略模式·uml
++==10 天前
基于策略模式的应用层协议支持
策略模式
Java后端的Ai之路10 天前
23、Python - 策略模式
linux·python·策略模式
程序员夏洛12 天前
什么是策略模式?一般用在什么场景?
策略模式
user_admin_god13 天前
数据采集/交换系统设计经验
spring boot·spring·策略模式
Nontee20 天前
Quartz 集群 + 策略模式:逾期预警推送系统设计实录
linux·服务器·策略模式
二炮手亮子21 天前
从 BIO、NIO、AIO 到多路复用与 Netty
策略模式·nio