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

什么是内聚和耦合?设计时怎样取舍?

先说出你的答案

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

查看完整题解

参考回答

直接回答

内聚关注一个模块内部的职责是否围绕同一目标,耦合关注模块之间依赖了多少彼此的知识和变化。通常希望职责集中、依赖明确,使修改某个功能时不必牵动大量无关代码。但“高内聚、低耦合”不是类越小越好,也不是模块之间完全没有联系。

讲清原理

如果订单类既计算金额,又负责发短信、渲染页面和管理连接,往往承担了过多变化原因。把通知交给明确的协作者,订单逻辑就不必知道短信厂商的细节。

依赖接口可以减少对具体实现的依赖,但若接口仍暴露数据库表结构、厂商异常或大量内部步骤,耦合只是换了一个位置。真正需要观察的是改动传播范围、状态边界和协作协议。

例子与易错点

OrderService 依赖一个小的 Notifier 协议,比在多个方法中写死短信 SDK 更便于替换和测试。这里的改善来自协议收窄,而不只是多写了一个 interface。

不要用“拆成更多类”作为唯一指标。职责分散到十几个互相来回调用的类,同样可能难以维护。先让一个业务规则有清楚的归属,再决定依赖方向与抽象边界。

相关题:第 3 题、第 11 题、第 14 题。

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

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