python实现工厂模式
时间: 2023-06-21 13:23:42 浏览: 91
工厂模式是一种常用的设计模式,它通过定义一个工厂类来创建对象实例,而不是直接在代码中创建对象实例。这种方式可以让代码更加灵活,易于维护和扩展。在 Python 中,可以使用类方法或静态方法来实现工厂模式。
以下是一个示例代码:
```python
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
class AnimalFactory:
@classmethod
def create_animal(cls, animal_type, name):
if animal_type == "dog":
return Dog(name)
elif animal_type == "cat":
return Cat(name)
else:
raise ValueError("Invalid animal type")
# 使用工厂类创建对象实例
dog = AnimalFactory.create_animal("dog", "Fido")
cat = AnimalFactory.create_animal("cat", "Fluffy")
# 调用对象实例的方法
print(dog.speak()) # 输出 "Woof!"
print(cat.speak()) # 输出 "Meow!"
```
在这个例子中,我们定义了一个 Animal 类和它的两个子类 Dog 和 Cat。Animal 类有一个实例变量 name 和一个方法 speak(),但是它的方法体为空。Dog 和 Cat 类分别重写了 Animal 类的 speak() 方法。
我们还定义了一个 AnimalFactory 工厂类,它有一个类方法 create_animal(),接收两个参数:animal_type 和 name。如果 animal_type 是 "dog",则返回一个 Dog 的实例,如果是 "cat",则返回一个 Cat 的实例。否则,抛出一个 ValueError 异常。
在主程序中,我们使用 AnimalFactory 工厂类分别创建了一个 Dog 和 Cat 的实例,并调用它们的 speak() 方法。
需要注意的是,这里使用的是类方法(classmethod)来实现工厂模式。另外,工厂类也可以使用静态方法(staticmethod)来实现,只需要将方法声明为静态方法即可。
阅读全文