适配器设计模式 - 角色之间的关系类型

时间:2013-07-16 04:48:11

标签: java design-patterns adapter aggregation ooad

我很想知道适配器设计模式的不同角色之间的关系(聚合,组合)。关于关联和聚合,我仍然很少有混淆。我在下面发布了适配器的类图。我需要知道adaptee是否与适配器处于聚合关系中。

Adapter Design Pattern UML

聚合关系定义如下面的代码片段所示。我知道UML中没有暗示聚合,但我发现在适配器和适配器中有类似的实现,如下面的代码所示。

final class Car {

  private Engine engine;

  void setEngine(Engine engine) {
    this.engine = engine;
  }

  void move() {
    if (engine != null)
      engine.work();
  }
}

有人可以解释一下,为什么适配器和适配器之间的关系不属于聚合类别。

1 个答案:

答案 0 :(得分:0)

  

聚合是一种关系的一部分   。
  。

     

在UML之前的日子里,人们通常对于什么是相当模糊的   聚合和什么是关联。无论是否模糊,他们都是   总是与其他人不一致。结果,许多建模者   认为聚合很重要,尽管出于不同的原因。   因此UML包含聚合但几乎没有任何语义。就像吉姆   Rumbaugh说,“把它想象成一个模特安慰剂”

引自UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition

因此根据定义,适配器可能不会聚合适配器。换句话说,适配器可能与适配器没有部分关系。

另一件事是聚合没有任何语义,因此使用它已或多或少成为个人选择。

最后一件事。我总是对关联,聚合和构图之间的差异感到有点模糊,但在阅读了Eric Evans的DDD后,我又有了一个关于它的评论,所以我写了一篇关于这个主题的文章。如果您想看看Relationships in Context