在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都写在对象中,将会使对象变得异常复杂;而且有时候支持不频繁使用的算法也是一个性能负担。
如何在运行时根据需要透明地更改对象的算法,将对象和算法解耦?
举例:不同国家税率的计算,新的需求是新增一个国家税率的计算。
不好的做法:增加一个if else
好的做法:定义一个新类(扩展),实现虚函数,以此来实现不同的税率计算。
在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都写在对象中,将会使对象变得异常复杂;而且有时候支持不频繁使用的算法也是一个性能负担。
如何在运行时根据需要透明地更改对象的算法,将对象和算法解耦?
举例:不同国家税率的计算,新的需求是新增一个国家税率的计算。
不好的做法:增加一个if else
好的做法:定义一个新类(扩展),实现虚函数,以此来实现不同的税率计算。