前言
当时我在做公司一个项目时,进行版本迭代时,引入了一个新的获取数据方式,但该方式只用于部分渠道商(10个),其他渠道商依旧按照老版本的方式获取数据。后续可能又会引入新的方式给其他渠道商,并且这种类型的功能后续也会不断优化。
因此我使用了策略模式。把该功能抽取出来作为策略,定义一个接口(抽象策略(Strategy)类),包含了该功能的方法。对于这个接口,去做一个对应实现(具体策略(Concrete Strategy)类),并注入到各个渠道商的代码中(环境(Context)类)。后续即时引入新的方式,实现一个具体策略类就行了,然后按需注入环境类所在容器,环境类中的代码不需要改变。
正文
策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。
策略模式有三个组成角色:
抽象策略(Strategy)类
具体策略(Concrete Strategy)类
环境(Context)类
策略模式把算法的使用放到环境类中,而算法的实现移到具体策略类中,实现了二者的分离。
大白话理解:其实说的就是有一个接口(抽象接口),他有2个实现类A和B(具体策略)。然后有一个环境类Context。这个接口是Context的成员变量,然后根据外在环境来选择是用A和B。
总体来说,策略模式是一个比较简单但是又十分常用的设计模式,希望后续可以学到更多设计模式知识。