【发布时间】:2020-12-27 08:10:17
【问题描述】:
在我正在学习的一门课程中,PizzaStore 使用了一个处理具体比萨饼实例化的simplePizzaFactory 类,如下图所示(如课程材料中提供的那样):
我用python重写的代码:
# Pizza's superclass and it's subclasses are defined elswhere
class SimplePizzaFactory:
def create_pizza(self,type_of_pizza):
if type_of_pizza == "cheese":
pizza = CheesePizza()
elif type_of_pizza == "pepperoni":
pizza = PepperoniPizza()
elif type_of_pizza == "clam":
pizza = ClamPizza()
elif type_of_pizza == "viggie":
pizza = ViggiePizza()
else:
raise Exception("You need to specify a type of pizza.")
return pizza
class PizzaStore:
def __init__(self, pizza_factory_obj):
self.pizza_factory_obj = pizza_factory_obj
def order_pizza(self,type_of_pizza):
type_of_pizza = type_of_pizza.lower()
pizza = self.pizza_factory_obj.create_pizza(type_of_pizza)
pizza.prepare()
pizza.bake()
pizza.box()
return pizza
print("========================================================")
factory = SimplePizzaFactory()
store = PizzaStore(factory)
store.order_pizza("Cheese")
store.order_pizza("viggie")
问题:
由(来自课程材料)概括:
我知道第一个箭头是聚合(因为创建了 simplePizzaFactory 的对象并将其作为参数发送到 PizzaStore)但是第二个箭头如何也是聚合?做一个虚线的依赖箭头不应该更有意义吗?
如果我对第一个箭头的理解不正确,我希望能对此部分和我的理解进行更多澄清。 代码上的任何 cmets 也将不胜感激
【问题讨论】:
标签: python design-patterns uml factory aggregation