定义:
是指一个模块依赖另一个模块的内部作业(例如,访问另一个模块的局 域变量),因此修改第二个模块处理的数据(位置、形态、时序)也就影响了第一个模baidu块。
拿现实生活的洗衣机的运行举个例子:
假设程序运行包含一下模块:
(1) 风干弄块(控制转筒的旋转)
开始旋转, 转筒转速达到1000降速,速度降低到100,加速旋转。
(2)洗衣机盖子保护(打开盖子,停止转筒的旋转)
(3)转筒控制模式
模块(1)(2)的运行都会影响3的状态,特别时模块2(不同阶段的控制不一样)
如果以(3)为一个模块
则有这样的方式
if(盖子保护){
转筒状态 = 停止
}
else if(加速状态 == 模块2.设置状态){
转筒状态 = 加速
}
else if(减速状态 == 模块2.设置状态) {
转筒状态 = 减速
}
这里我们访问了模块2的内部数据,而且这个内部数据理论上应该是私有的,所以就发生了内容耦合,模块2的局部变量状态会影响3的运行。
风险点:
如果我们需要更改模块2的运行机制,分为加速,保持,减速,状态,那么模块3也需要进行更改。
更改方式:
if(盖子保护){
转筒状态 = 停止
}
else if(模块2正在运行){
转筒状态 = 模块2设置需求函数;
}
模块2设置需求函数
{
返回加速,保持或减速。
}
成功解除了数据耦合(局部变量访问的问题)