关于订单的多件折扣及优惠券实现设计模式(组合+策略模式)

本文介绍了如何运用组合及策略模式来设计电商优惠活动,如M件N折和优惠券功能。通过创建Order类、ICalDiscountPromotion接口以及各自实现类,实现了订单折扣计算的灵活性,方便后续添加新的优惠策略。
摘要由CSDN通过智能技术生成

首次用的策略+组合模式:

 

现实中,我们要实现一个M件N折的功能

 

意思是,满几件,打几折的电商优惠活动。

 

后面考虑来,优惠券,于是统一使用这个模式去实现该功能:

 

先上设计图:

 

 

 

其中

 

order类,与打折类(接口)是组合的关系。

 

即,优惠券或M件N折,均是Order的一部份。

 

先说,M件N折:

 

实现步骤:

 

首先设计类及接口。

 

Order类的设计:

 

1.给Order类,添加一个私有成员,iCalCount接口。ICalDiscountPromotion iCalDiscount。

2.给Order类,添加一个折扣,AddCalDiscount(iCalDiscount)

 

 

ICalDiscountPromotion的设计:

1.声明接口

2.实现这个接口的两个类

3.每个类,分别实现各自的CalDiscount()计算优惠价格。

 

 

最后,调用的实现:

 

Order order=new Order()

Order.AddCalDisCount(new CalDiscountActivity(价格,数量,规则)

 

至此,简单的模式,实现折扣优惠。

 

后面再有优惠,就可以添加一个新类去计算

 

代码:

 

 

   public class Order {

       

        private ICalDiscountPromotion _calDiscount;

        /// <summary>

        /// 加一个折扣优惠

        /// </summary>

        /// <param name="calDiscount"></param>

        public void AddCalDiscount(ICalDiscountPromotion calDiscount) {

            this._cal

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值