首次用的策略+组合模式:
现实中,我们要实现一个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