0

我有兴趣了解适配器设计模式的不同角色之间的关系(聚合、组合)。我对关联和聚合仍然没有什么困惑。我已经在下面发布了Adapter的类图。我需要知道适配器是否与适配器处于聚合关系。

适配器设计模式 UML

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

final class Car {

  private Engine engine;

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

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

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

4

1 回答 1

0

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

在 UML 之前的日子里,人们通常对什么是聚合和什么是关联相当模糊。无论是否模糊,他们总是与其他人不一致。因此,许多建模者认为聚合很重要,尽管出于不同的原因。所以 UML 包括聚合但几乎没有任何语义。正如 Jim Rumbaugh 所说,“将其视为建模安慰剂”

引自UML Distilled:标准对象建模语言简要指南,第三版

所以根据定义,适配器可能不会聚合被适配者。换言之,适配者可能与适配者没有部分关系。

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

最后一件事。我总是对关联、聚合和组合之间的区别感到一种模糊,但是在阅读了 Eric Evans 的 DDD 之后,我对它有了另一个看法,所以我写了一篇关于这个主题的文章。如果您愿意看一下关系中的上下文

于 2013-07-16T08:07:48.147 回答