1
0
Fork 0
design-patterns/python/factory_method/main.py

65 lines
1.4 KiB
Python

"""
实例
小汤有一家披萨店,他想通过工厂方法模式来创建不同类型的披萨。
首先,他定义了一个披萨接口和具体的披萨类,然后创建了一个披萨工厂接口和具体的披萨工厂类来生产不同类型的披萨。
"""
from abc import ABC, abstractmethod
# 披萨接口
class Pizza(ABC):
@abstractmethod
def show(self):
pass
# 披萨工厂接口
class PizzaFactory(ABC):
@abstractmethod
def createPizza(self) -> Pizza:
pass
# 具体的披萨类
class CheesePizza(Pizza):
def show(self):
print(" 这是个芝士披萨!\n")
class PepperoniPizza(Pizza):
def show(self):
print(" 这是个意大利辣香肠披萨!\n")
# 具体的披萨工厂类
class CheesePizzaFactory(PizzaFactory):
def createPizza(self) -> Pizza:
return CheesePizza()
class PepperoniPizzaFactory(PizzaFactory):
def createPizza(self) -> Pizza:
return PepperoniPizza()
def main():
print("========= 工厂方法模式 =========")
# 创建芝士披萨
factory = CheesePizzaFactory()
print("芝士披萨工厂启动:")
pizza = factory.createPizza()
pizza.show()
# 创建意大利辣香肠披萨
factory = PepperoniPizzaFactory()
print("意大利辣香肠披萨工厂启动:")
pizza = factory.createPizza()
pizza.show()
print("======= 工厂方法模式结束 =======")
if __name__ == "__main__":
main()