【问题标题】:UML notation: What is this relationship?UML 表示法:这种关系是什么?
【发布时间】:2010-09-22 05:42:00
【问题描述】:

看下面的UML图(装饰器模式),装饰器和组件的关系叫什么名字?是协会吗?

【问题讨论】:

    标签: uml


    【解决方案1】:

    Component 和 Decorator 之间的两种关系构成了另一种模式——Composite

    • 装饰器是组件的子类型(与三角形相关)
    • 装饰器聚合(包括)许多组件(与菱形相关)

    它允许创建递归树结构。在聚合装饰器上调用的操作被委托给它包含的元素。因此,在您的图表中,Decorator.Operation() 的行为是在其每个聚合组件上调用 Component.Operation()。由于一个或多个 thpse 本身可能是装饰器,因此对 Operation() 的调用会通过树结构传播。

    【讨论】:

      【解决方案2】:

      一个是另一个聚合的扩展(那是在 Decorator 有小号的那个)。 这意味着一个装饰器可以包含 0 个或多个组件。

      马里奥

      【讨论】:

        【解决方案3】:

        它是aggregation。装饰器有很多组件。

        【讨论】:

          【解决方案4】:

          聚合。看到差异的最简单方法是“成为”和“拥有”。 一个对象组件“有一个装饰器”。对象装饰器“是一个组件”。

          【讨论】:

            【解决方案5】:

            您正在描述一个聚合。 问题是该图应该与您的代码相反,或者您应该从您的图中获取代码。仅图形 UML 设计对我来说是不够的。

            当我使用没有代码映射到 UML 的工具时,我的建模迟早会很糟糕! 我创建了漂亮的图表,但除了演示之外没有人真正使用它们。我意识到这对团队中的每个人来说都是浪费时间。 我已经切换到专业工具,然后我的项目真正被团队使用,而不仅仅是在故事板中使用过的图形视图。 令我惊讶的是,开发人员还纠正了我的图表,因为在实现阶段,UML 中的优点在代码中是不可能的 :-) 这就是为什么如果您使用类图,作为独立的 UML 对我没有任何价值。我使用开源图形工具犯了这个错误,但不会再犯了!

            【讨论】:

              【解决方案6】:

              延长关系

              【讨论】:

              • AFAIK,扩展关系是用例而不是类之间。
              • @odiseh:你错了。类之间存在extends关系。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-07-06
              • 1970-01-01
              • 2021-12-08
              • 2016-04-25
              • 2016-03-19
              • 2023-03-10
              相关资源
              最近更新 更多