[1] [组件协作] ( 2 ) 策略模式 Strategy (用于替代分支语句)
总结
-
用扩展的方式来支持未来的变化.
-
定义一组算法,
把它们一个个封装起来,
并且使它们可互相替换(变化),
使得算法可独立于使用它的客户端(稳定)而变化(扩展/子类化).
-
该模式提供了if else以外的另一种选择,
消除条件判断语句,就是在解耦合.
含有许多条件判断语句的代码,
通常都需要Strategy模式.
-
Strategy及其子类为组件提供了一系列可重用的算法,
从而可以使得类型在运行时,
方便地根据需要,
在各个算法之间进行切换。
-
在哪里用?
在开发中当看见会扩展的if else时,
你就该想一想是不是使用策略模式了.
主要组件
- 策略接口
- 具体策略
- context
C++例子
例子中的代码, 在未来会不断地增加新的地区支持需求, 从而引发CalculateTax()的修改.

角色结构

浙公网安备 33010602011771号