一、定义:
定义一个用于创建对象的接口(工厂接口),让子类决定实例化哪个产品类
二、角色:
1、抽象工厂角色
2、具体工厂角色
3、抽象产品角色
4、具体产品角色
三、示例:
from abc import ABCMeta, abstractmethod
class Payment(metaclass=ABCMeta):
@abstractmethod
def pay(self, money):
pass
class Alipay(Payment):
def __init__(self, use_huabei=False):
self.use_huabei = use_huabei
def pay(self, money):
if not self.use_huabei:
print('alipay Payment')
else:
print('huabei Payment')
class WechatPay(Payment):
def pay(self, money):
print('wechat Payment')
class PaymentFatcory(metaclass=ABCMeta):
@abstractmethod
def create_payment(self):
pass
class AliPaymentFatcory(PaymentFatcory):
def create_payment(self):
return Alipay()
class WechatPaymentFatcory(PaymentFatcory):
def create_payment(self):
return WechatPay()
class AliHuabeiPaymentFatcory(AliPaymentFatcory):
def create_payment(self):
return Alipay(use_huabei=True)
if __name__ == '__main__':
apay = AliHuabeiPaymentFatcory().create_payment()
apay.pay(100)