Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

聚合与组合的区别,能否只看是否 new 部件?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

不能只看 new 的位置。聚合通常保留部件独立存在或共享的可能,组合强调同一时刻的独占归属和整体对部件业务生命周期的管理。整体内部创建部件,可能帮助实现组合,但真正的判断依据仍是模型约束和对外暴露的操作。

讲清原理

一个类在构造器中 new 出列表,并不代表列表里每个元素都被它独占。若把外部共享对象放进去,再把列表直接返回,调用者仍可能让多个整体共享部件。

反过来,工厂可以先创建一个部件,再把它交给某个整体独占管理;即使不是在整体构造器中直接 new,也可能符合组合语义。代码创建位置只是线索,不是定义。

关联表示联系,聚合表示共享整体关系,组合强调独占部件
关联表示联系,聚合表示共享整体关系,组合强调独占部件

例子与易错点

要检查的约束 聚合常见情况 组合关注点
部件是否可共享 可以按业务模型共享 同时最多一个组合整体
生命周期 可独立存在 由整体管理当前所属部件
修改入口 仍需明确规则 尤其要维护独占与一致性

删除 Java 引用不会立即删除数据库记录,也不会保证 GC 立刻回收对象。实现中应明确“删除”“解绑”“关闭资源”各指什么操作,不要把几个生命周期混成一个词。

相关题:第 1 题、第 10 题、第 15 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。