Python设计模式详解之2 —— 工厂模式
工厂模式(Factory Pattern)是一种创建型设计模式,旨在定义一个用于创建对象的接口,但由子类决定实例化哪个类。工厂模式可以帮助我们将对象的创建与其使用分离,增强代码的可扩展性和维护性。
工厂模式的分类
- 简单工厂模式(Simple Factory Pattern)
- 工厂方法模式(Factory Method Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
这里先介绍 简单工厂模式和工厂方法模式
1. 简单工厂模式
简单工厂模式是一种创建型设计模式,它通过一个单一的工厂类来创建不同类型的对象。这个工厂类通常具有一个静态方法,根据输入的参数决定创建哪种对象。
结构:
实现方式:
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
class AnimalFactory:
@staticmethod
def create_animal(animal_type):
if animal_type == 'dog':
return Dog()
elif animal_type == 'cat':
return Cat()
else:
raise ValueError("Unknown animal type")
# 使用示例
animal = AnimalFactory.create_animal('dog')
print(animal.speak()) # 输出 "Woof!"
优点:
缺点:
适用场景:
2. 工厂方法模式
工厂方法模式是简单工厂模式的进一步抽象。它定义了一个创建对象的接口,但由子类决定实例化的类是哪一个。每个具体子类都有自己的工厂方法来创建对象。
结构:
实现方式:
from abc import ABC, abstractmethod
# 抽象产品类
class Animal(ABC):
@abstractmethod
def speak(self):
pass
# 具体产品类
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
# 抽象工厂类
class AnimalFactory(ABC):
@abstractmethod
def create_animal(self):
pass
# 具体工厂类
class DogFactory(AnimalFactory):
def create_animal(self):
return Dog()
class CatFactory(AnimalFactory):
def create_animal(self):
return Cat()
# 使用示例
dog_factory = DogFactory()
dog = dog_factory.create_animal()
print(dog.speak()) # 输出 "Woof!"
cat_factory = CatFactory()
cat = cat_factory.create_animal()
print(cat.speak()) # 输出 "Meow!"
优点:
缺点:
适用场景:
区别总结:
何时选择哪种模式:
作者:拾工