接上篇,本篇将会介绍C++设计模式中的Strategy 策略模式
,和上篇模板方法Template Method
一样,仍属于“组件协作”模式,它与Template Method有着异曲同工之妙。
文章目录
1. 动机( Motivation)
-
在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。(结合下面的代码,如果算法只是在中国使用,其他国家的算法就不会被使用到,可能会占用内存资源,因此也就是一种性能负担)
-
如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题?
2. 代码演示Strategy 策略模式
以下是一种税的计算,比如在电子商务系统中常常需要进行订单中税的计算,假如支持跨国结算,就需要考虑不同国家税的计算方法不同。例如以下代码中中国、美国、德国之间的税率相差是很大的(初始是没有法国的),因此在代码中需要支持不同的税的计算方法。<