信息摘要:
本篇是Pytho與設計模式系列第一篇:策略模式。完成一項任務往往有多種方式,我們將其稱之為策略。比如,超市做活動,如果你的購物積分滿1000…
本篇是 Python與設計模式系列第一篇:策略模式
。
完成一項任務往往有多種方式,我們將其稱之為策略。
比如,超市做活動,如果你的購物積分滿1000,就可以兌換現金抵用券抵用10元,如果購買同一商品滿10件,就可以打9折,如果購買的金額超過500,就可以享受滿減50元的優惠。這是三個不同的促銷策略。
再比如,聯系朋友、同學,可以打電話,也可以發短信,可以發微信,也可以發郵件,這是四個不同的聯系策略。
再比如,去外出旅游,我們可以選擇火車,也可以選擇公共汽車,可以選擇飛機,也可以選擇自駕游。這又是四個不同的出行策略。
以上這些真實場景,都有策略選擇模型的影子,可以考慮使用策略模式。
經典的策略模式,是由三部分組成
-
Context:上下文環境類
-
-
Context:Order類,訂單信息,包括商品,價格和數量,還有購買者等
-
Stragety:Promotion類,抽象基類,包含一個抽象方法(計算折扣)
-
ContreteStragety:分三個類,FidelityPromo,BulkItemPromo,LargeOrderPromo,實現具體的折扣計算方法。
-
Stragety:策略基類
-
ConcreteStragety:具體策略