示例
from abc import ABCMeta, abstractmethod# ------------------------------------# 产品类# ------------------------------------class Payment(metaclass=ABCMeta): @abstractmethod def pay(self, money): passclass Alipay(Payment): def __init__(self, use_huabei=False): self.use_huabei = use_huabei def pay(self, money): if self.use_huabei: print(f'花呗支付{money}') else: print(f"支付宝支持{money}")class WechatPay(Payment): def pay(self, money): print(f"微信支付{money}")class BankPay(Payment): def pay(self, money): print(f'银行卡支付{money}')# ------------------------------------# 工厂类# ------------------------------------class PaymentFactory(metaclass=ABCMeta): @abstractmethod def create_payment(self): passclass AlipayFactory(PaymentFactory): def create_payment(self): return Alipay()class WechatPayFactory(PaymentFactory): def create_payment(self): return WechatPay()class HuabeiFactory(PaymentFactory): def create_payment(self): return Alipay(use_huabei=True)class BankPayFactory(PaymentFactory): def create_payment(self): return BankPay()# clientpf = HuabeiFactory()p = pf.create_payment()p.pay(100)运行结果
