Python 实现设计模式之工厂模式

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. 总结

工厂模式是一种实现对象创建和使用分离的设计模式。通过定义抽象工厂类和具体工厂类,可以实现扩展性强的代码结构。使用工厂模式,可以将对象创建的细节封装在具体工厂类中,客户端只需通过抽象工厂类创建对象即可。

在本文中,我们介绍了工厂模式的基本概念,并给出了一个简单的示例。通过这个示例,我们可以更好地理解工厂模式的实现原理和使用方法。

后端开发标签