1. 公共接口:python
class MDCash: def acceptCash(self): return
2. 根据上面定义的接口实现:code
# 正常 class MDCashNormal(MDCash): def acceptCash(self, params): return params # 返5 class MDCaseReturn(MDCash): def acceptCash(self, params): return params - 5 # 打9折 class MDCashRobate(MDCash): def acceptCash(self, params): return params - params * 0.1
3. 实现context,封装不一样行为的接口。orm
class MDCashContext: def __init__(self, cashStrategy): self.cashStrategy = cashStrategy def performPay(self, params): print self.cashStrategy.acceptCash(params)
4. 使用接口
if __name__ == '__main__': context = MDCashContext(cashStrategy=MDCaseReturn()) context.performPay(100) context = MDCashContext(cashStrategy=MDCashNormal()) context.performPay(100) context = MDCashContext(cashStrategy=MDCashRobate()) context.performPay(100)
5. 全部代码:utf-8
#encoding:utf-8 class MDCash: def acceptCash(self): return class MDCashNormal(MDCash): def acceptCash(self, params): return params class MDCaseReturn(MDCash): def acceptCash(self, params): return params - 5 class MDCashRobate(MDCash): def acceptCash(self, params): return params - params * 0.1 class MDCashContext: def __init__(self, cashStrategy): self.cashStrategy = cashStrategy def performPay(self, params): print self.cashStrategy.acceptCash(params) if __name__ == '__main__': context = MDCashContext(cashStrategy=MDCaseReturn()) context.performPay(100) context = MDCashContext(cashStrategy=MDCashNormal()) context.performPay(100) context = MDCashContext(cashStrategy=MDCashRobate()) context.performPay(100)
运行结果:it
95 100 90.0