首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单工厂(UML)中的聚合或依赖

简单工厂(UML)中的聚合或依赖
EN

Stack Overflow用户
提问于 2020-09-08 22:34:34
回答 1查看 152关注 0票数 1

在我正在学习的课程中,PizzaStore使用一个simplePizzaFactory类来处理具体的披萨实例化,用下面的图表描述(如课程材料中所提供的):

我用python重写的代码:

代码语言:javascript
复制
# 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 ),但是第二个箭头也是如何聚合的呢?难道做一个虚线依赖箭头不是更有意义吗?

如果我对第一支箭不正确的话,我希望能对这部分和我的理解有更多的澄清。如对守则有任何评论,亦会不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-09 07:52:04

--我理解第一个箭头是聚合(因为创建了simplePizzaFactory的一个对象,并将其作为参数发送给PizzaStore )

这并不是因为PizzaStore (客户端)的构造函数(或任何其他方法)接收到存在第一个聚合甚至简单关联的SimplePizzaFactory实例。

对我来说,这两个集合都是错误的。

aggregation

  • the
  • SimpleFactory不知道客户端使用它,所以没有SimpleFactory产品不知道创建它的SimpleFactory,所以SimpleFactory没有聚合。

图表可以是(Pizza是抽象的,但它可能是一个接口?):

注意,在您的第一个图表中,SimplePizzaFactory和Pizza之间的关系也是错误的,因为在SimplePizzaFactory中没有属性来记忆Pizza的实例,相反,对于具有保存SimplePizzaFactory实例的属性的PizzaStore来说,使用依赖原型创建是非常清楚的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63802394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档