一、原理讲解
1.1意图
定义算法簇,将这些算法封装起来,之间可以相互替换。这样的好处在于,使得算法可以独立于使用它的客户而变化。
1.2与模板方法区别
模板方法主要是继承接口类,而策略模式主要是组合接口类,两种方法核心区别在于,是继承?还是组合?
设计模式八大原则之一:优先使用对象组合,而不是类继承。
1.3结构图UML
![](https://img-blog.csdnimg.cn/2020082300441427.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25haWJvemh1YW4zNzQ0,size_16,color_FFFFFF,t_70)
1.4设计步骤
a1 先定义一个接口类最为抽象基类IStrategy
a2 定义一系列算法(本示例中定义两个算法)类Strategy1和Strategy2,继承抽象基类IStrategy。算法类重写抽象基类IStrategy接口函数,也就是分别在类Strategy1和Strategy2中实现算法细节fun。
a3 创建一个上下文类Context,申明一个抽象基类对象