什么是耦合、解耦

本文介绍了耦合的概念及其在软件工程中的重要性,并探讨了解耦的方法和技术,包括使用观察者模式来实现模块间的低耦合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、耦合

1、耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。

2、在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小。

3、分类:有软硬件之间的耦合,还有软件各模块之间的耦合。耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。

二、解耦

1、解耦,字面意思就是解除耦合关系。

2、在软件工程中,降低耦合度即可以理解为解耦,模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低。

3、设计的核心思想:尽可能减少代码耦合,如果发现代码耦合,就要采取解耦技术。让数据模型,业务逻辑和视图显示三层之间彼此降低耦合,把关联依赖降到最低,而不至于牵一发而动全身。原则就是A功能的代码不要写在B的功能代码中,如果两者之间需要交互,可以通过接口,通过消息,甚至可以引入框架,但总之就是不要直接交叉写。

4、观察者模式:观察者模式存在的意义就是「解耦」,它使观察者和被观察者的逻辑不再搅在一起,而是彼此独立、互不依赖。比如网易新闻的夜间模式,当用户切换成夜间模式之后,被观察者会通知所有的观察者「设置改变了,大家快蒙上遮罩吧」。QQ消息推送来了之后,既要在通知栏上弹个推送,又要在桌面上标个小红点,也是观察者与被观察者的巧妙配合。

 

### 耦合解耦的定义及字面含义解释 #### 1. 耦合的定义 耦合是指两个或多个模块、组件或系统之间相互依赖的程度。当一个系统的组成部分与其他部分紧密相连时,它们之间的联系越强,则耦合度越高。高耦合可能导致修改其中一个模块时影响到其他关联模块的行为[^3]。 #### 2. 解耦的定义 解耦是对耦合状态的一种改善措施,旨在降低不同模块间的直接依赖程度。通过引入抽象层或者接口等方式,使得各模块能够独立运作而不受彼此具体实现的影响[^2]。 #### 3. 字面含义解析 - **耦合**:“耦”本意为两人共同耕作的形象描绘,在计算机科学领域引申为事物间存在着某种形式的合作关系;“合”意味着结合在一起。“耦合”整体表达的就是多方因素紧密结合不可分割的状态。 - **解耦**:“解”代表解开动作,“脱”表示脱离某个束缚条件。“解耦”即打破原有紧密连接局面的过程,让原本互相制约的部分获得自由发展机会。 --- ```c // 高耦合示例代码片段 void ModuleA() { int result = CalculateValue(); } int CalculateValue(){ return SomeComplexLogic(); } ``` 上述简单演示展示了函数ModuleA完全依赖于CalculateValue的具体实现细节,形成了较高的耦合水平。 相比之下,采用面向对象编程原则下的工厂模式或是策略模式等技术手段可以有效达成较低层次上的耦合效果: ```java public interface ICalculator{ public abstract double calculate(double value); } class ConcreteCalculation implements ICalculator { @Override public double calculate(double value){ // 实现计算逻辑... return Math.sqrt(value); } } // 使用ICalculator而非特定类型的实例 IClient client=new Client(new ConcreteCalculation()); client.performOperation(9d);// 输出3.0 ``` 这里通过定义`ICalculator`接口并让具体的业务逻辑类去实现它,从而实现了客户端(Client)对于算法选择灵活性的同时也减少了二者之前的直接绑定关系。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值