耦合是啥?高耦合又是什么?以及为什么要说他。
自然框架 2011-01-05 08:00:30
耦合是什么?就是两个“元素”之间的关联、制约、调用关系。
有几个关键点。
1、不能是一个,至少也得是两个。
2、要谈耦合,必须说二者有关系的部分,不能去说二者无关的部分。
3、不要谈耦合色变。在大多数情况下,耦合是不可避免的,只能尽量减少相互的影响。
4、如果是一个,我们可以谈谈是否违反了“单一职责”,但是我们不要谈论“耦合”。当我们把这“一个”分成了“多个”之后,在来谈耦合。
耦合,当一个“元素”发生了变化,其他的“元素”如何调整才能够适应这个元素的变化。
这里的“元素”指的又是什么呢?这个就多了,可以是类(class),可以是函数,可以是人,可以是事物,也可以是零件。
高耦合又是什么?高是一个形容词,形容关联关系非常密切,一个变化后其他的受到的影响非常的大。
低耦合就是影响的程度非常小。
=========================
举例子的时间到了。
我们对电脑硬件都很熟悉吧,那么我们就以pc机的主板、内存、cpu为例来说一下。
我有一台老电脑,里面用的是DDR1的内存,内存坏掉了,到市场上一打听,发现内存都已经是DDR3了。我想买DDR3,但是老主板不支持,想要用DDR3的内存,就必须换主板。可是换主板的话,原来的cpu也用不了了。
不过还有一个好消息,虽然我不能用DDR3的内存,但是我可以使用其他品牌、其他厂商、不容容量的DDR1 的内存,只要是DDR1的就可以更换。
内存升级换代了,主板也要做调整,否则就不能使用新的内存,这就是高耦合。
内存没有升级换代,那么就可以更换其他品牌、厂商和容量的内存,这就是低耦合。
可能你有点晕,怎么一回低一会高?
先说低耦合吧。为什么可以更换其他品牌、厂商和容量的内存的内存呢?因为内存厂商和主板厂商,都准寻同一个标准(接口)——DDR(1代)。大家都准寻这个标准来生产,那么生产出来的就可以互相替换。我想升级内存可以更换容量,比如单条512K的内存和单条1G的内存。
那么到后来怎么又不行了呢?标准(接口)发生了变化。赖以生存的东东变了,于是就杯具了。
谈论耦合,目的是为了能够把一个大的模块分成几个小的模块,互相独立发展,但是之间又必须准寻一定的标准。也就是他们互相调用(或者单项调用)的方式。
就是这个标准要如何定义,各个模块如何实现,要达到什么样的程度。就拿上面的例子来说,想当初内存的标准为什么不直接定义成DDR3的形式?我对硬件不太了解,相必有其原因吧,可能是技术上的,可能是经济上的,也可能是盈利方面的。这个就不多说了,总之想要一步到位,一下子做的完美,几乎是不可能的。量力而行吧。
以上是我的拙见,让大家见笑了。欢迎多多指教。
============
对于内聚,我还没吃透,就不说了。