Python中如何实现简单工厂设计模式?

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

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

Python中如何实现简单工厂设计模式?

更详细资料请参考【设计模式】。简单工厂模式包含意义,不直接面向客户端暴露对象创建细节,而是通过一个工厂类负责创建产品的实例。简单工厂模式中的角色包括:- 工厂类(Creator):负责创建产品实例。- 产品类(Product):被创建的对象。- 客户端(Client):使用产品类。


更多信息请参考

简单工厂模式含义

不直接向客户端暴露对象创建的实现细节,而是通过一个工厂类来负责创建产品类的实例

简单工厂模式中的角色

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

优点

  • 隐藏了对象创建的细节
  • 客户端不需要修改代码

缺点

  • 违反了单一职责原则,将创建逻辑集中到一个工厂类里
  • 当增加新产品时,需要修改工厂类代码,违反了开闭原则

简单工厂模式示例:

代码如下:

Python中如何实现简单工厂设计模式?

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(object):
def create_payment(self,method):
if method=="alipay":
return Alipay()
elif method=="wechat":
return WeChatPay()
else:
raise TypeError(f"no such payment named {method}")

if __name__=="__main__":
pf=PaymentFactory()
p=pf.create_payment("alipay")
p.pay(100)

执行结果如下:

pay 100 in alipay way....

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

Python中如何实现简单工厂设计模式?

更详细资料请参考【设计模式】。简单工厂模式包含意义,不直接面向客户端暴露对象创建细节,而是通过一个工厂类负责创建产品的实例。简单工厂模式中的角色包括:- 工厂类(Creator):负责创建产品实例。- 产品类(Product):被创建的对象。- 客户端(Client):使用产品类。


更多信息请参考

简单工厂模式含义

不直接向客户端暴露对象创建的实现细节,而是通过一个工厂类来负责创建产品类的实例

简单工厂模式中的角色

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

优点

  • 隐藏了对象创建的细节
  • 客户端不需要修改代码

缺点

  • 违反了单一职责原则,将创建逻辑集中到一个工厂类里
  • 当增加新产品时,需要修改工厂类代码,违反了开闭原则

简单工厂模式示例:

代码如下:

Python中如何实现简单工厂设计模式?

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(object):
def create_payment(self,method):
if method=="alipay":
return Alipay()
elif method=="wechat":
return WeChatPay()
else:
raise TypeError(f"no such payment named {method}")

if __name__=="__main__":
pf=PaymentFactory()
p=pf.create_payment("alipay")
p.pay(100)

执行结果如下:

pay 100 in alipay way....