我遇到了 this在寻找一种在 Java 中实现聚合和组合的方法时回答。这是回答者的组合实现 -
final class Car {
private final Engine engine;
Car(EngineSpecs specs) {
engine = new Engine(specs);
}
void move() {
engine.work();
}
}
我想问一下是否必须将引擎声明为私有(private) final 才能使其成为有效组合?组合是否也意味着引擎的属性在其生命周期内永远不会改变?
最佳答案
简答:
不!
长答案:
UML 组合只是意味着组合实例的生命周期与其上级实例紧密耦合。所以没有不允许交换或修改复合实例的约束。
但请牢记聚合和组合之间的区别!
聚合:
- Supervisor -> Student (如果supervisor辞职了,sudent还是可以完成学业的)
- 公司 -> 员工
组成:
- 建筑 -> 房间 (如果建筑被摧毁,房间也会被摧毁)
- 公司->部门
关于java - 有必要不修改作文吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25872973/