📜  工厂方法Python设计模式(1)

📅  最后修改于: 2023-12-03 14:53:58.478000             🧑  作者: Mango

工厂方法Python设计模式

工厂方法是一种常用的设计模式,它通过提供一个抽象工厂来完成对象的创建,使得创建对象的过程与客户端的调用过程分离,从而降低了代码的耦合性。

应用场景

在以下情况下可以考虑使用工厂方法设计模式:

  1. 需要在运行时动态生成对象;
  2. 需要隐藏不同对象创建之间的差异;
  3. 需要将对象的创建逻辑与客户端代码逻辑分离;
  4. 需要在不同的场景下使用不同的对象。
实现步骤

工厂方法的实现步骤如下:

  1. 创建一个抽象工厂类,定义对象的创建接口;
  2. 创建具体的工厂类,实现抽象工厂类中的对象创建接口;
  3. 创建抽象产品类,定义对象的属性和方法;
  4. 创建具体的产品类,实现抽象产品类中定义的属性和方法。
代码示例
from abc import ABC, abstractmethod

# 创建抽象工厂类
class AnimalFactory(ABC):
    @abstractmethod
    def create_animal(self):
        pass

# 创建具体的工厂类
class CatFactory(AnimalFactory):
    def create_animal(self):
        return Cat()

class DogFactory(AnimalFactory):
    def create_animal(self):
        return Dog()

# 创建抽象产品类
class Animal(ABC):
    @abstractmethod
    def talk(self):
        pass

# 创建具体的产品类
class Cat(Animal):
    def talk(self):
        return "Meow!"

class Dog(Animal):
    def talk(self):
        return "Woof!"

# 客户端代码
cat_factory = CatFactory()
dog_factory = DogFactory()

cat = cat_factory.create_animal()
dog = dog_factory.create_animal()

print(cat.talk()) # Meow!
print(dog.talk()) # Woof!

以上代码创建了一个简单的动物工厂,客户端代码可以通过工厂类创建具体的动物对象并调用其方法。此时,客户端代码无需关心具体的对象是如何创建的,从而实现了客户端代码逻辑和对象创建逻辑的分离。

参考文献