策略模式-大道至简

文章目录

摆个类图

本质

  1. 定义一个标准策略接口Strategy,这个接口中声明一个场景下应该使用的策略(执行的逻辑)。随后具体的执行器(具体的场景)应当实现这个接口,并实现自己的策略执行逻辑。
  2. 为了方便调用,一般会额外编写一个Context(可以理解成再次使用了一次工厂模式)对外隐藏具体策略的调用逻辑,而这里一般是维护一个Strategy集合,在参数进入时进行匹配(无论是维护List在每次进入时使用for进行匹配,还是Map进行get,本质都一样)
  3. 关于其场景与策略的映射关系的维护:通常会维护一个枚举,并在具体策略实现时进行配置,实现方式通常有如下两种
    1. 在Strategy接口中额外生命一个getStrategyType方法,用于对外暴露相应的策略枚举
    2. 首先使用一个抽象类AbstractStrategy,并维护一个strategyType属性,再在每个子类继承时进行重写
    3. (一般建议使用第一个方式,毕竟第二个方式不是强约束,有可能出现漏写而造成错误)
相关推荐
我命由我123451 天前
软件开发 - 避免过多的 if-else 语句(使用策略模式、使用映射表、使用枚举、使用函数式编程)
java·开发语言·javascript·设计模式·java-ee·策略模式·js
饕餮争锋2 天前
设计模式笔记_行为型_策略模式
笔记·设计模式·策略模式
二进制coder2 天前
OpenBMC中C++策略模式架构、原理与应用
c++·架构·策略模式
夕四丶2 天前
【java实现一个接口多个实现类通用策略模式】
java·策略模式
找不到、了2 天前
Java设计模式之《策略模式》
java·设计模式·策略模式
刘火锅2 天前
设计模式-策略模式 Java
java·设计模式·策略模式
T0uken9 天前
【Mac】WireGuard:使用 launchd 管理服务
macos·策略模式
橘色的喵10 天前
嵌入式C语言编程:策略模式、状态模式和状态机的应用
c语言·状态模式·策略模式·状态机
Code blocks12 天前
SpringBoot中策略模式使用
java·spring boot·后端·mybatis·策略模式
Yang-Never13 天前
设计模式 -> 策略模式(Strategy Pattern)
android·开发语言·设计模式·kotlin·android studio·策略模式