假设将来会有更多的披萨。为了使我的代码更健壮并避免依赖于Pizza类的具体类,哪种方法更好?
class Pizza:
def order(pizza_type):
pizza = none
if pizza_type == "cheese":
pizza = CheezePizza()
elif pizza_type == "pepperoni":
pizza = PepperoniPizza()
elif pizza_type == "veggie":
pizza = VeggiePizza()
pizza.prepare()
pizza.bake()
return pizza
最好使用1)工厂方法设计模式,2)单例设计模式或3)观察者设计模式或4)保持原样?
[我相信您在这里所做的被称为“外观模式”,恕我直言,它最适合此目的-但是,我会稍微不同地实现它:
class Pizza:
pizza_types = {
"cheese": CheesePizza,
"pepperoni": PepperoniPizza,
"veggie": VeggiePizza
}
def order(pizza_type):
pizza_constructor = Pizza.pizza_types.get(pizza_type)
pizza = pizza_constructor() # instantiate the right type of pizza
pizza.prepare()
pizza.bake()
return pizza
您正在通过这种方法将比萨饼的“创造”和“准备”结合在一起。