策略模式与工厂模式结合

94 阅读1分钟

策略模式

定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的用户。减少了各种算法类与使用算法类之间的耦合。
Strategy(定义所有公共接口)类层次为Context定义了一系列的可供重的算法和行为。继承有助于析取出这算法中的公共功能(计算费用的结果GetResult())。
简化了单元测试,因为每个算法都有自己的类,可以通过自己的接口单独测试。

image.png

CashSuper 超类

所有收款策略的爸爸,acceptCash抽象方法。

image.png

CashNormal,CashRebate,CashReturn 不同的收款策略

重写acceptCash。如有自己的参数,需要构造函数。
double.Parse()用来将字符串类型转换为双精度浮点类型。

image.png

image.png

image.png

CashContext 现金类

创造对象,传入策略,并使用对应的方法。

image.png

Program 测试类

image.png