耦合详解-模块
耦合详解耦合(Coupling)是衡量软件模块之间相互依赖程度的指标。低耦合是优秀软件设计的核心目标之一,它使系统更易于维护、测试和扩展。1.耦合的本质耦合描述的是两个模块(类、组件、服务)之间的依赖关系强度。当修改一个模块时,需要修改其他模块的程度越高,耦合度就越高。text高耦合 = 牵一发而动全身 低耦合 = 独立变化,互不干扰2.耦合的7个层次(从高到低)2.1 内容耦合(Content Coupling)- 最高耦合一个模块直接访问或修改另一个模块的内部数据。java// ❌ 内容耦合 public class User { private String password; // 私有字段 // 没有提供getter/setter } public class LoginService { public boolean authenticate(User user) { // 直接访问私有字段(通过反射或语言特性绕过封装) // 这是最严重的耦合形式 return "123456".equals(user.password); } }问题:破坏封装性,修改内部实现必然影响调用方。2.2 公共耦合(Common Coupling)多个模块共享同一个全局数据。java// ❌ 公共耦合 public class GlobalConfig { public static String DB_URL = "jdbc:mysql://localhost:3306/test"; public static String DB_USER = "root"; public static String DB_PASSWORD = "123456"; } public class UserRepository { public void save() { // 直接使用全局变量 Connection conn = DriverManager.getConnection( GlobalConfig.DB_URL, GlobalConfig.DB_USER, GlobalConfig.DB_PASSWORD ); } } public class OrderRepository { public void save() { // 同样依赖全局变量 Connection conn = DriverManager.getConnection( GlobalConfig.DB_URL, GlobalConfig.DB_USER, GlobalConfig.DB_PASSWORD ); } }问题:全局变量变化影响所有使用它的模块,难以追踪和测试。改进:java// ✅ 通过依赖注入降低耦合 public class DatabaseConfig { private String url; private String username; private String password; // getters... } public class UserRepository { private final DatabaseConfig config; public UserRepository(DatabaseConfig config) { this.config = config; // 依赖注入 } }2.3 控制耦合(Control Coupling)一个模块通过传递控制信息(标志、开关)影响另一个模块的行为。java// ❌ 控制耦合 public class OrderService { public void processOrder(Order order, boolean isExpress, boolean needInvoice) { if (isExpress) { // 快递处理逻辑 } else { // 普通物流处理 } if (needInvoice) { // 开发票逻辑 } } } public class OrderController { public void createOrder(OrderRequest request) { orderService.processOrder(order, request.isExpress()
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2471636.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!