【发布时间】:2021-06-14 16:07:35
【问题描述】:
我发现以下两个示例在 java 代码中区分聚合和组合
组合
final class Car {
private final Engine engine;
Car(EngineSpecs specs) {
engine = new Engine(specs);
}
void move() {
engine.work();
}
}
聚合
final class Car {
private Engine engine;
void setEngine(Engine engine) {
this.engine = engine;
}
void move() {
if (engine != null)
engine.work();
}
}
我有一些疑问。我注意到这两个方面的以下几点
1 当两个对象聚合在一起时,看起来类似于组合,唯一的
不同的是,如果根对象被销毁,其他对象不会被销毁。
-
那么我们是否可以说聚合也是一种组合,但反之则不然?
-
由于在聚合中涉及到组合,因此对象存在的唯一方式
独立是从外部提供它们。有点像注入它们而不是组合它们
从根类内部。这听起来很像依赖注入原理。
以上几点或更多指针的任何cmet?
【问题讨论】:
-
另外:不,“聚合模式”,正如在领域驱动设计文献中所理解的那样,不应被理解为“聚合”的表达。它的性质接近于构图。
-
感谢您的链接。聚合看起来很像依赖注入。不是吗?
标签: java design-patterns domain-driven-design aggregation composition