工厂角色:payment_factory
抽象产品角色:payment
具体产品角色:Alipay
from abc import ABCMeta, abstractmethod
class Payment(metaclass = ABCMeta):
def pay(self, money):
pass
class AliPay(Payment):
def __init__(self, use_huabei = False):
self.use_huabei = use_huabei
def pay(self, money):
if self.use_huabei:
print("花呗支付%d元." % money)
else:
print("支付宝支付%d元"% money)
class WechatPay:
def pay(self, money):
print("微信支付%d元"% money)
class PaymentFactory:
def create_payment(self, method):
if method == "alipay":
return AliPay()
elif method == "huabei":
return AliPay(use_huabei = True)
elif method == "wechat":
return WechatPay()
else:
raise TypeError("No such payment named %s" % method)
#client
#隐藏类的内部实现
pf = PaymentFactory()
p = pf.create_payment("huabei")
p.pay(100)
花呗支付100元.