1. 介绍
工厂模式是一种提供创建对象的接口,但是具体的对象创建逻辑是在工厂类中实现的设计模式。它可以将对象的创建与使用代码分离开来,遵循“开闭原则”,即对扩展开放,对修改关闭。
在Python中,工厂模式通常由一个抽象工厂类和多个具体工厂类组成。每个具体工厂类负责创建不同的对象,而抽象工厂类定义了创建对象的接口。
2. 示例
2.1 定义抽象工厂类
首先,我们需要定义一个抽象工厂类,它包含一个抽象方法用于创建对象。
from abc import ABC, abstractmethod
class AbstractFactory(ABC):
@abstractmethod
def create_object(self):
pass
2.2 定义具体工厂类
接下来,我们可以定义多个具体工厂类,它们分别实现了抽象工厂类中的抽象方法,用于创建不同类型的对象。
class ConcreteFactoryA(AbstractFactory):
def create_object(self):
return ConcreteObjectA()
class ConcreteFactoryB(AbstractFactory):
def create_object(self):
return ConcreteObjectB()
2.3 定义具体对象类
然后,我们可以定义多个具体对象类,它们分别实现了相应工厂类中的方法,用于实际创建对象。
class ConcreteObjectA:
def __init__(self):
self.name = "Object A"
def operation(self):
return "Operation of Object A"
class ConcreteObjectB:
def __init__(self):
self.name = "Object B"
def operation(self):
return "Operation of Object B"
2.4 使用工厂模式
最后,我们可以使用工厂模式创建对象。根据不同的条件选择不同的具体工厂类,然后通过具体工厂类创建相应的对象。
def create_object(factory):
obj = factory.create_object()
return obj
factory_a = ConcreteFactoryA()
obj_a = create_object(factory_a)
print(obj_a.name)
print(obj_a.operation())
factory_b = ConcreteFactoryB()
obj_b = create_object(factory_b)
print(obj_b.name)
print(obj_b.operation())
运行以上代码,输出结果如下:
Object A
Operation of Object A
Object B
Operation of Object B
3. 总结
工厂模式是一种实现对象创建和使用分离的设计模式。通过定义抽象工厂类和具体工厂类,可以实现扩展性强的代码结构。使用工厂模式,可以将对象创建的细节封装在具体工厂类中,客户端只需通过抽象工厂类创建对象即可。
在本文中,我们介绍了工厂模式的基本概念,并给出了一个简单的示例。通过这个示例,我们可以更好地理解工厂模式的实现原理和使用方法。