美文网首页
4. Strategy 模式

4. Strategy 模式

作者: 何大炮 | 来源:发表于2019-01-29 18:00 被阅读0次

场景

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

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

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

这里有三个原则要考虑:

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

所以我们要做的,

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

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

总结

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

相关文章

  • 4. Strategy 模式

    场景 我们按照需求设计了一个国际电子商务的程序,其中有一个涉及到了计算税收。在我们设计完成后,又来了一个新的需求:...

  • 王者荣耀之「策略者模式」

    目录 什么策略模式(Strategy)1.1 Strategy模式的定义1.2 为什么用Strategy模式,他的...

  • (GeekBand)C++设计模式 第一周学习笔记

    Strategy模式 今天重点来介绍下Strategy模式。 作为三大经典“组件协作”模式之一的Strategy模...

  • 设计模式用例(三)

    Strategy 模式 Bridge 模式 Iterator 模式

  • STRATEGY 模式

    STRATEGY 模式 一.定义 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 二.类图 三....

  • strategy模式

    按照自己的理解就是: 一个策略完成的方法有多种,具体的实现类里面包含一个策略虚基类的指针,根据子类实例化的类调用具...

  • Strategy 模式

    证券交易费用 佣金 brokerage 证监会交易征费 SFC Transaction Levy 财务汇报局交易征...

  • 设计模式之策略模式

    策略模式 Strategy Intro 策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可...

  • 策略模式 -- 整体的替换算法

    1. 概述 所谓“策略”(strategy),即程序中的“算法”。策略模式(strategy pattern)可以...

  • 设计模式-策略模式

    设计模式-策略模式 定义 策略模式(Strategy Pattern)也叫政策模式(Policy Pattern)...

网友评论

      本文标题:4. Strategy 模式

      本文链接:https://www.haomeiwen.com/subject/keoxsqtx.html