高内聚低耦合是Java工程可维护、可扩展、安全可靠的核心实践:高内聚指类职责单一、逻辑内聚;低耦合靠接口编程与依赖注入实现模块解耦;封装与分层架构是其落地保障。

因为高内聚低耦合直接决定代码能不能长期维护、容易扩展、安全可靠。它不是理论空话,而是Java工程每天都在面对的真实问题。
高内聚让每个类“守好自己的摊子”
一个类只做一件事,并且把相关逻辑全包圆,这就是高内聚。比如订单校验、价格计算、折扣应用这些动作,都该集中在OrderProcessor里,而不是散落在用户服务、库存服务甚至Controller里。
- 类内部方法都围绕“订单处理”这个核心目标,不掺杂发短信、写日志、查数据库等无关逻辑
- 字段和方法彼此强关联,删掉一个方法不会让其他方法突然失效
- 修改折扣规则时,只动
applyDiscount(),不影响验证或总价计算
低耦合让模块之间“点头之交,各干各的”
两个类之间依赖越少、接口越简单,改动就越安全。Java里最典型的低耦合实践,就是面向接口编程 + 依赖注入。
- 业务类不直接
new PayPalGateway(),而是接收PaymentGateway接口 - 支付方式切换(PayPal → Stripe)只需换实现类,不用改
PaymentService一行代码 - 单元测试时可轻松注入Mock对象,不依赖真实网络或第三方SDK
封装是实现高内聚低耦合的底层手段
把字段设为private,只暴露必要的public方法,不是为了“防着别人”,而是为了划定责任边界。
立即学习“Java免费学习笔记(深入)”;
-
Student类把age设为私有,用setAge()加校验逻辑,外部就无法赋值-5或999 - 外部调用者只关心“能设置年龄”,不关心怎么校验、存哪、是否同步到缓存
- 将来把年龄改成从身份证号推算,只要
setAge()签名不变,所有调用点完全无感
工程结构上要看得见的分层隔离
包结构不是随便建的,它是低耦合的物理体现。常见合理分层:
-
controller:只处理HTTP协议、参数校验、返回格式,不碰业务逻辑 -
service:专注领域流程,调用多个repository但不关心SQL怎么写 -
repository:只和数据库打交道,不涉及订单状态流转等业务判断 -
model和dto分开:避免数据库实体直接透传到前端,防止敏感字段泄露
基本上就这些。不复杂,但容易忽略。










