本篇是 Python与设计模式系列第一篇:策略模式
。
完成一项任务往往有多种方式,我们将其称之为策略。
比如,超市做活动,如果你的购物积分满1000,就可以兑换现金抵用券抵用10元,如果购买同一商品满10件,就可以打9折,如果购买的金额超过500,就可以享受满减50元的优惠。这是三个不同的促销策略。
再比如,联系朋友、同学,可以打电话,也可以发短信,可以发微信,也可以发邮件,这是四个不同的联系策略。
再比如,去外出旅游,我们可以选择火车,也可以选择公共汽车,可以选择飞机,也可以选择自驾游。这又是四个不同的出行策略。
以上这些真实场景,都有策略选择模型的影子,可以考虑使用策略模式。
经典的策略模式,是由三部分组成
Context:上下文环境类
Context:Order类,订单信息,包括商品,价格和数量,还有购买者等
Stragety:Promotion类,抽象基类,包含一个抽象方法(计算折扣)
ContreteStragety:分三个类,FidelityPromo,BulkItemPromo,LargeOrderPromo,实现具体的折扣计算方法。
Stragety:策略基类
ConcreteStragety:具体策略
咨询热线
18125323067