行为型模式:strategy pattern策略模式

137 阅读1分钟

1.定义 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。

策略模式是一种比较简单的模式,也叫做政策模式。

2.策略模式的使用场景

(1)多个类只有在算法或行为上有不同的场景

(2)算法需要自由切换的场景

(3)需要屏蔽算法规则的场景

3主要角色

(1)抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现。

(2)具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现。

(3)环境(Context)类:持有一个策略类的引用,最终给客户端调用。

4.优缺点

优点

(1)策略类之间可以自由切换

由于策略类都实现同一个接口,所以使它们之间可以自由切换。

(2)易于扩展

增加一个新的策略只需要添加一个具体的策略类即可,基本不需要改变原有的代码,符合“开闭原则“

(3)避免使用多重条件选择语句(if else),充分体现面向对象设计思想。

缺点

(1)客户端必须知道所有的策略类,并自行决定使用哪一个策略类。

(2)策略模式将造成产生很多策略类,可以通过使用享元模式在一定程度上减少对象的数量。