定义了一个抽象类Animal,并且让具体的动物类(Dog、Cat、Duck)继承自它,并实现了speak方法。然后创建了AnimalFactory工厂类,根据传入的参数来决定创建哪种动物的实例。
from abc import abstractmethod, ABC
class Animal(ABC):#抽象一个基类,继承ABC,目的是不能实力化该类
@abstractmethod #用 @abstractmethod 方法是继承该类后,必须实现该方法。
def speak(self):
pass
class Dog(Animal):
def speak(self):
print("Woof!")
class Cat(Animal):
def speak(self):
print("Meow!")
class Duck(Animal):
def speak(self):
print("Quack!")
class AnimalFactory:
def create_animal(self, animal_type: str):
animal_type = animal_type.lower() # 统一转换为小写
if animal_type == "dog":
return Dog()
elif animal_type == "cat":
return Cat()
elif animal_type == "duck":
return Duck()
else:
return None
if __name__ == '__main__':
factory = AnimalFactory()
dog = factory.create_animal("dog")
cat = factory.create_animal("cat")
duck = factory.create_animal("duck")
dog.speak() # 输出: Woof!
cat.speak() # 输出: Meow!
duck.speak() # 输出: Quack!