【Python设计模式】工厂方法模式

花间影清欢课程 2024-03-27 11:09:47
工厂方法模式(创建型模式)内容:定义一个用于创建对象的接口(工厂接口),让子类决定实例化哪一个产品类.角色: - 抽象工厂角色(Creator) - 具体工厂角色(Concrete Creator) - 抽象产品角色(Product) - 具体产品角色(Concrete Product)优点: - 每个具体产品都对应一个具体的工厂类,不需要修改工厂类代码 - 隐藏了对象创建的实现细节缺点: - 每增加一个具体产品类,就必须增加一个相应的具体工厂类

示例

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)

运行结果

0 阅读:0