Python中如何实现工厂方法设计模式?

2026-05-16 15:431阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计562个文字,预计阅读时间需要3分钟。

Python中如何实现工厂方法设计模式?

增加信息参考,[设计模式] 工厂方法模式含义,定义一个用于创建对象的接口(工厂接口),让子类决定实例化哪一个类。决定哪个产品类实例化的是子类,工厂方法模式中包含了角色:创建者(Creator)、具体创建者(ConcreteCreator)、产品(Product)、具体产品(ConcreteProduct)。


更多信息请参考

工厂方法模式含义

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

工厂方法模式中的角色

  • 抽象工厂角色(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)

执行结果如下:

Python中如何实现工厂方法设计模式?

pay 300 in alipay way....

本文共计562个文字,预计阅读时间需要3分钟。

Python中如何实现工厂方法设计模式?

增加信息参考,[设计模式] 工厂方法模式含义,定义一个用于创建对象的接口(工厂接口),让子类决定实例化哪一个类。决定哪个产品类实例化的是子类,工厂方法模式中包含了角色:创建者(Creator)、具体创建者(ConcreteCreator)、产品(Product)、具体产品(ConcreteProduct)。


更多信息请参考

工厂方法模式含义

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

工厂方法模式中的角色

  • 抽象工厂角色(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)

执行结果如下:

Python中如何实现工厂方法设计模式?

pay 300 in alipay way....