策略模式---《大话设计模式》笔记

时间:2021-01-27 22:00:37

策略模式是用来封装算法的。此模式让算法的变化,不会影响到使用算法的客户。


在上一篇博客:简单工厂模式中,例子2也可以用策略模式实现,封装算法。基类和三个子类不需要改动,只需要添加策略类,并将工厂类中的代码整合进策略类!具体如下:

例子2:输入:商品的单价和数量

     输出:消费额

//类的设计

基类:  {acceptCash(double money)}    //计算消费额的虚函数,参数为原价,返回当前价

子类:正常收费{acceptCash(double money)}  //虚函数具体实现

子类:打折促销

{moneyRebate;//折扣率

CashRebate(string moneyRebate)//构造函数,设置折扣率

acceptCash(double money)//虚函数具体实现}  

子类:满减促销

{moneyCondition,moneyReturn;//消费满金额,消费减金额

CashReturn(string moneyCondition,string moneyReturn)//构造函数,设置满减参数

acceptCash(double money)//虚函数具体实现}  

……  //更多子类,按需设计

策略类:{CashSuper cs;//一个基类对象

CashContext(CashSuper csuper) //构造函数,传入具体的收费策略,用以实例化cs

GetResult(double money)//根据收费策略的不同,获得计算结果

//类结构图

策略模式---《大话设计模式》笔记