使用工厂模式解决不同父类映射不同子类的问题。首先,定义一个抽象父类,并在其中声明一个工厂方法。然后,根据需求创建不同的子类,每个子类都继承自抽象父类,并实现其工厂方法。最后,根据传入不同参数的不同情况,使用相应的子类来实例化对象。
示例代码如下:
# 定义抽象父类
class Animal:
def speak(self):
pass
# 工厂方法
@classmethod
def create_animal(cls, animal_type):
if animal_type == "dog":
return Dog()
elif animal_type == "cat":
return Cat()
else:
raise ValueError("Invalid animal type")
# 定义子类
class Dog(Animal):
def speak(self):
return "Woof"
class Cat(Animal):
def speak(self):
return "Meow"
# 使用方式
a1 = Animal.create_animal("dog")
a2 = Animal.create_animal("cat")
print(a1.speak())
print(a2.speak())