Python中的工厂模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Python中的工厂模式
工厂模式(Factory Pattern)是一种常用的设计模式,用于创建
对象。

它属于创建型模式,通过定义一个工厂类负责创建其他对象的
实例,而不必直接使用new关键字来创建对象。

工厂模式使得代码的
可拓展性和复用性更好,同时也隐藏了对象的创建和实现细节,简化
了客户端的操作。

工厂模式的核心思想是将对象的实例化操作封装起来,让客户端
只需调用工厂方法即可创建所需的对象。

从而达到降低系统耦合度的
目的。

工厂模式的实现方式有两种:一种是通过一个单独的工厂类来创
建所需的对象,另一种是通过将工厂方法定义在需要创建对象的类中。

其中,单独的工厂类又可以分为简单工厂和工厂方法两种模式。

1.简单工厂模式
简单工厂模式(Simple Factory Pattern),也叫静态工厂模式,由一个工厂类负责创建所有需要的产品类的实例。

客户端只需向该工
厂类传递相应的参数,即可获取所需的对象。

该模式下,工厂类通常是一个静态类或者包含一个静态方法的类。

简单工厂模式的代码结构如下:
```
class Product:
def __init__(self):
pass
class ProductA(Product):
def __init__(self):
print("Product A")
class ProductB(Product):
def __init__(self):
print("Product B")
class SimpleFactory:
def create_product(self, product_type):
if product_type == "A":
return ProductA()
elif product_type == "B":
return ProductB()
factory = SimpleFactory()
productA = factory.create_product("A")
productB = factory.create_product("B")
```
该代码中,类Product、ProductA、ProductB分别为抽象产品类、具体产品类。

类SimpleFactory为工厂类,其中定义了一个创建产品
的静态方法create_product。

客户端只需要实例化工厂类后调用其create_product方法即可获得所需的产品对象。

2.工厂方法模式
工厂方法模式(Factory Method Pattern)是一种常用的面向对象设计模式。

它由四部分构成:抽象产品类、具体产品类、抽象工厂类和具体工厂类。

抽象工厂定义了一个创建产品对象的工厂接口,它包含多个抽象业务方法,只有具体工厂类可以实现这些方法,开发者编写抽象工厂类时,无需关心具体业务如何实现。

具体产品类是抽象产品类的派生类,由具体工厂类创建,它们之间一一对应。

工厂方法模式的代码结构如下:
```
#抽象产品类
class Product:
def __init__(self):
pass
def print_info(self):
pass
#具体产品类A
class ProductA(Product): def __init__(self):
print("ProductA")
def print_info(self): print("This is ProductA") #具体产品类B
class ProductB(Product): def __init__(self):
print("ProductB")
def print_info(self): print("This is ProductB") #抽象工厂类
class Factory:
def create_product(self):
pass
#具体工厂类A
class FactoryA(Factory):
def create_product(self):
return ProductA()
#具体工厂类B
class FactoryB(Factory):
def create_product(self):
return ProductB()
#客户端
factory = FactoryA()
product = factory.create_product() product.print_info() # This is ProductA
factory = FactoryB()
product = factory.create_product()
product.print_info() # This is ProductB
```
该代码中,Product、ProductA、ProductB分别为抽象产品类和具体产品类。

Factory是抽象工厂类,其中定义了一个抽象的
create_product方法,具体工厂类FactoryA和FactoryB分别实现该
方法。

客户端根据具体的工厂类来获得所需的对象,并进行使用。

工厂方法模式相对于简单工厂模式的优势在于它不需要一个具体
的工厂来创建所需要的对象,具体的工厂通过继承抽象工厂来实现不
同的工厂实例。

这样,代码的可拓展性和复用性更好,同时符合开闭
原则。

总结
工厂模式是一种常用的设计模式,它将对象的创建操作封装起来,通过一个统一的工厂类来管理一组具有相同功能的对象的实例。

通过
使用工厂模式,我们能够降低系统的耦合度,同时也符合单一职责原则和开闭原则。

具体到不同的场景,我们可以选择简单工厂模式或者工厂方法模式,或者其他更适合的创建型模式。

在实际的系统开发过程中,我们需要根据具体的需求来选择合适的设计模式,实现高质量、易维护、易扩展的代码。

相关文档
最新文档