4. Strategy 模式

场景

我们按照需求设计了一个国际电子商务的程序,其中有一个涉及到了计算税收。在我们设计完成后,又来了一个新的需求:因为这个系统要在加拿大用,所以我们要增加一个按照加拿大的税收制度计算税款的功能。

怎么做:粘贴复制?继承?
这时,因为系统也要在中国用,所以又需要增加一个按照中国的税收制度计算税款的功能。

显然粘贴和继承都会让代码臃肿和复杂。

这里有三个原则要考虑:

  1. 针对接口进行编程,而不要针对实现进行编程。
  2. 优先使用对象组合,而不是类继承。
  3. 考虑设计中什么应该是可变的。

所以我们要做的,

  1. 寻找到变化,并将它封装到一个单独的类。
  2. 把这个类包含在另一个类中。

即:创建一个抽象类定义如何在概念上完成税额计算,然后为每种税收派生具体的类。

总结

定义:定义一系列算法,把他们一个个封装起来,并且使他们可以相互替换,stragery模式使算法独立于使用它的客户而变化。
意图:可以根据不同的上下文,使用不同的业务规则或者算法。
解决方案:将对算法的选择和算法的实现相分离。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容