策略模式-大道至简

文章目录

摆个类图

本质

  1. 定义一个标准策略接口Strategy,这个接口中声明一个场景下应该使用的策略(执行的逻辑)。随后具体的执行器(具体的场景)应当实现这个接口,并实现自己的策略执行逻辑。
  2. 为了方便调用,一般会额外编写一个Context(可以理解成再次使用了一次工厂模式)对外隐藏具体策略的调用逻辑,而这里一般是维护一个Strategy集合,在参数进入时进行匹配(无论是维护List在每次进入时使用for进行匹配,还是Map进行get,本质都一样)
  3. 关于其场景与策略的映射关系的维护:通常会维护一个枚举,并在具体策略实现时进行配置,实现方式通常有如下两种
    1. 在Strategy接口中额外生命一个getStrategyType方法,用于对外暴露相应的策略枚举
    2. 首先使用一个抽象类AbstractStrategy,并维护一个strategyType属性,再在每个子类继承时进行重写
    3. (一般建议使用第一个方式,毕竟第二个方式不是强约束,有可能出现漏写而造成错误)
相关推荐
特种加菲猫15 小时前
并发编程的守护者:信号量与日志策略模式解析
linux·笔记·策略模式
xiaowu0801 天前
策略模式-不同的鸭子的案例
开发语言·c#·策略模式
彭于晏Yan2 天前
Spring Boot中策略模式结合依赖注入的实现方式
spring boot·策略模式
宁静致远20212 天前
【C++设计模式】第二篇:策略模式(Strategy)--从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析
c++·设计模式·策略模式
Meteors.3 天前
23种设计模式——策略模式 (Strategy Pattern)详解
设计模式·策略模式
qq_435139573 天前
【1】策略模式 + 模板方法模式的联合应用
策略模式·模板方法模式
谢栋_3 天前
设计模式从入门到精通之(六)策略模式
设计模式·bash·策略模式
Nerd Nirvana4 天前
C++编程——异步处理、事件驱动编程和策略模式
开发语言·c++·策略模式·嵌入式开发·事件驱动·异步处理
成都被卷死的程序员5 天前
策略模式 + 工厂模式
策略模式
oioihoii8 天前
VS Code C#调试完全指南
开发语言·c#·策略模式