设计模式之策略模式(Strategy Pattern)

概述

In the context of the Strategy pattern there exist multiple variants for one algorithm where one variant is chosen to be executed at runtime.

策略模式是指一个算法的多种实现,并且在运行阶段只有一个算法被选中执行。

比如:在一个方法里面查询根据标识查询指定的数据表。这种的缺点在于代码耦合性高,不符合开闭原则,因为当新增一个查询的时候,需要修改代码,增加else if.

Original Code

策略模式三要素

1.同一种类型的解决办法,都是查询数据,只是根据条件不同,查询指定的数据

2.操作类(Context),用来使用策略实现类的引用

3.具体的策略实现类

使用策略模式优化上面代码

Optimization Code

使用Context存储Realization of Strategy

Context

业务代码优化结果:

Optimization Code

策略模式优化后优缺点

优点是符合开闭原则,耦合性降低了。代码逻辑更清晰。扩展的时候,新增实现类就好了。

缺点是客户端需要知道所有的实现类,并把他存储起来(目前的缺点,其他方式不一定要存储)。

GitHub Code Respository of This Article

参考资料

设计模式之策略模式(Java实现例子说明)

Object-Oriented Design Patterns explained using practical examples

你可能感兴趣的:(设计模式之策略模式(Strategy Pattern))