我很想知道适配器设计模式的不同角色之间的关系(聚合,组合)。关于关联和聚合,我仍然很少有混淆。我在下面发布了适配器的类图。我需要知道adaptee是否与适配器处于聚合关系中。
聚合关系定义如下面的代码片段所示。我知道UML中没有暗示聚合,但我发现在适配器和适配器中有类似的实现,如下面的代码所示。
final class Car {
private Engine engine;
void setEngine(Engine engine) {
this.engine = engine;
}
void move() {
if (engine != null)
engine.work();
}
}
有人可以解释一下,为什么适配器和适配器之间的关系不属于聚合类别。
答案 0 :(得分:0)
聚合是一种关系的一部分 。
。在UML之前的日子里,人们通常对于什么是相当模糊的 聚合和什么是关联。无论是否模糊,他们都是 总是与其他人不一致。结果,许多建模者 认为聚合很重要,尽管出于不同的原因。 因此UML包含聚合但几乎没有任何语义。就像吉姆 Rumbaugh说,“把它想象成一个模特安慰剂”
引自UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition。
因此根据定义,适配器可能不会聚合适配器。换句话说,适配器可能与适配器没有部分关系。
另一件事是聚合没有任何语义,因此使用它已或多或少成为个人选择。
最后一件事。我总是对关联,聚合和构图之间的差异感到有点模糊,但在阅读了Eric Evans的DDD后,我又有了一个关于它的评论,所以我写了一篇关于这个主题的文章。如果您想看看Relationships in Context。