当前位置 : 主页 > 编程语言 > python >

设计模式(Python语言)----工厂方法模式

来源:互联网 收集:自由互联 发布时间:2022-08-10
更多信息请参考 【设计模式】 工厂方法模式含义 定义一个用于创建对象的接口(工厂接口),让子类决定实例化哪个产品类 工厂方法模式中的角色 抽象工厂角色(Creator) 具体工厂角


更多信息请参考 【设计模式】

工厂方法模式含义

定义一个用于创建对象的接口(工厂接口),让子类决定实例化哪个产品类

工厂方法模式中的角色

  • 抽象工厂角色(Creator)
  • 具体工厂角色(Concrete Creator)
  • 抽象产品角色(Product)
  • 具体产品角色(Concrete Product)

工厂方法模式与简单工厂模式的区别

  • 简单工厂模式只有一个工厂类,这一个工厂类可以生产出不同产品的实例
  • 工厂方法模式是每个产品都有一个工厂类,每个产品额实例都由各自独立的工厂类生产出来

优点

  • 每个具体产品都对应一个具体工厂类,不需要修改工厂类代码
  • 隐藏了对象创建的细节

缺点

  • 每增加一个具体产品类,就必须增加一个相应的具体工厂类
  • 代码量过多

工厂方法模式实例

代码实现如下:

import abc

class Payment(metaclass=abc.ABCMeta):
@abc.abstractmethod
def pay(self,money):
pass

class Alipay(Payment):
def pay(self,money):
print(f"pay {money} in alipay way....")

class WeChatPay(Payment):
def pay(self,money):
print(f"pay {money} in wechat pay way...")

class PaymentFactory(metaclass=abc.ABCMeta):
@abc.abstractmethod
def create_payment(self):
pass

class AlipayFactory(PaymentFactory):
def create_payment(self):
return Alipay()

class WechatFactory(PaymentFactory):
def create_payment(self):
return WeChatPay()


if __name__=="__main__":
pf=AlipayFactory()
p=pf.create_payment()
p.pay(300)

执行结果如下:

pay 300 in alipay way....

网友评论