内容耦合

定义:

是指一个模块依赖另一个模块的内部作业(例如,访问另一个模块的局 域变量),因此修改第二个模块处理的数据(位置、形态、时序)也就影响了第一个模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设置需求函数

{


返回加速,保持或减速。

}


成功解除了数据耦合(局部变量访问的问题)

你可能感兴趣的:(内容耦合)