1.C++ 设计模式 - 策略模式
C++ 设计模式 - 策略模式
策略模式定义多种处理同一场景的商场商场不同算法,这些算法可在不影响用户的购物购物情况下互相替换。
应用场景
某会员制商场有两种级别会员:银卡会员、源码源码黄金会员,商场商场分别享有9折、购物购物免费程序网页源码8折购物优惠。源码源码swingsets3源码同时不同的商场商场会员用户在生日当天购物,会赠送不同的购物购物生日礼物。
分析
场景比较简单,源码源码需要解决的商场商场问题是区分不同类型的顾客享有不同的权益(折扣和生日礼物)。
按照平常的购物购物编码习惯,通常会在需要区分用户等级的源码源码业务上加上if判断,实现不同等级顾客应享有的商场商场网易星球app源码不同权益。这种方案能快速的购物购物解决实际问题,但是源码源码随着业务需要,商场又要引进更高逼格的会员类型,譬如白金会员、vue v model源码钻石会员等。此时,需要在散落在各处的业务代码上加上if补丁。
这种做法会引来如下问题:
解决方案
引入策略模式,.net 订场 源码将用户等级抽象,分别定义出用户所有的行为,不同等级的用户各自实现该等级应享有的权益。
策略模式
CShop: 商场类。实现不同等级顾客的折扣结算、生日礼物等。持有CConsumer指针,根据需要指向具体的顾客实例(CCommonUser、CSilverUser、CGoldUser)。
CConsume: 顾客抽象类。定义顾客所有的行为接口。
CCommonUser、CSilverUser、CGoldUser: 具体顾客类。不同等级顾客实现有差异部分的接口。
执行效果
客户端实现
总结源码
商店类接口
更新顾客类型
顾客类抽象接口
具体顾客类:黄金会员
客户端接口
推荐文章
C++ 设计模式 - 命令模式
开源文章目录