高内聚和低耦合是同义词。
1。高内聚,指自成一体。
2。低耦合,指对外部的依赖很小。
只是他们侧重的角度不同,内聚侧重的是内政,而耦合侧重的是外交。
一个对象有两种外交形势,一是输出价值观,让别人调用,二是输入价值观,依赖别人。低耦合指的是输入价值观应该尽量少。如果必然要输入,那么输入的形式也有强弱之分,强耦合就是严重依赖别人。
从系统角度,如果要每个对象不依赖别人,却又妄想更多的输出价值观,这是矛盾的。因此,所谓的低耦合,指的是尽量减少不必要的输入,尤其避免强耦合。
从系统角度,越接近系统底层的,越具体的,耦合越强,而越高层的,越抽象的,耦合越低。
园子的这个博问搞的不行啊。不活跃啊。冷冷清清的。 博文倒很好。
不矛盾。
谢谢回答。。。望给出具体事例解答。。。
不矛盾,高内聚是指关系很密切的东西要放一起,低耦合是指不要把没什么关系的东西揉在一起,所以如果把关系密切的东西分开,就不是低耦合,而是破坏了内聚。
这个我感觉不好从设计模式上来讲,高内聚低耦合相当于是OO的基本原则,设计模式站的层面更高点。
这个和SRP(单一职责原则)关系我感觉也很大,例如一个方法职责不单一,那也就意味着把不同职责的东西放在一起,不同的职责一般是没有太多联系的,所以,把它们放在一起就是高耦合。
而内聚,例如一个User类里有FirstName, LastName, FullName属性,FullName = FirstName + " " + LastName,如果把FullName写到一个其它的类中,例如所谓的UserBLL.GetFullName(User user),那就变成低内聚了,因为FullName和User关系是非常密切的。