一、策略模式介绍

策略模式(Strategy Design Pattern) ,行为型设计模式。
策略模式定义:针对一组提供有相同算法的类进行归类封装,使用者无需关注类的创建过程和实现过程,只需要指定特定算法和入参数即可完成相关计算操作。

二、策略模式使用模板

场景:字符串加密算法策略模式实现
在应用开发中,字符串的加密场景随处可见,比如:密码,数据加密,敏感数据处理等。针对这些算法,可以使用 策略模式进行统一规范,规范使用流程和简化使用操作。

2.1、统一字符加解密规范

[设计模式]-[行为型]-策略-介绍及应用 - 图1
统一接口规范:加密 和 解密

2.2、算法实现

算法实现有很多种,以 Md5 、AES、字符敏感信息处理为例。
Md5 实现如下:
[设计模式]-[行为型]-策略-介绍及应用 - 图2
AES 实现如下:
[设计模式]-[行为型]-策略-介绍及应用 - 图3
字符敏感实现如下:
[设计模式]-[行为型]-策略-介绍及应用 - 图4

上述字符串算法特点:都实现了统一的接口规范 IStringEnOrDecryption。

2.3、策略方法实现

进行算法选择策略实现如下:
[设计模式]-[行为型]-策略-介绍及应用 - 图5
通过枚举的方式,实现策略的选择和方法调用

2.4、使用案例

[设计模式]-[行为型]-策略-介绍及应用 - 图6
枚举本身就是 JVM 级别的单例,通过单例进行实例,然后直接使用枚举的方式进行调用,而无需关注算法对象的构建和具体实现。

三、Mybatis 中的策略模式

在 Mybatis 中核心层处理 SQL 操作由 Executor 执行器完成。
在 Mybatis 中存在多种 Executor 实现,如下:
[设计模式]-[行为型]-策略-介绍及应用 - 图7
多种 Executor 执行器,意味着使用的时候需要进行选择,Mybatis 使用策略模式提供了策略方法来实现 Executor 的选择。
在使用过程中,无需关注 Executor 的创建,只需要传入需要的执行器类型,即可获取到相应的执行器实例,相关代码实现如下:
[设计模式]-[行为型]-策略-介绍及应用 - 图8


【公众号】花好夜猿
wxlogo.jpg