首页新闻找找看学习计划

高内聚和低耦合矛盾吗?

0
悬赏园豆:50 [已解决问题] 解决于 2012-02-02 09:14

rt

望能从面向对象设计模式中的不同模式中对比举例。

好运的主页 好运 | 初学一级 | 园豆:160
提问于:2012-01-20 11:31
< >
分享
最佳答案
0

高内聚和低耦合是同义词。

1。高内聚,指自成一体。

2。低耦合,指对外部的依赖很小。

只是他们侧重的角度不同,内聚侧重的是内政,而耦合侧重的是外交。

 

一个对象有两种外交形势,一是输出价值观,让别人调用,二是输入价值观,依赖别人。低耦合指的是输入价值观应该尽量少。如果必然要输入,那么输入的形式也有强弱之分,强耦合就是严重依赖别人。

从系统角度,如果要每个对象不依赖别人,却又妄想更多的输出价值观,这是矛盾的。因此,所谓的低耦合,指的是尽量减少不必要的输入,尤其避免强耦合。

从系统角度,越接近系统底层的,越具体的,耦合越强,而越高层的,越抽象的,耦合越低。

收获园豆:20
诺贝尔 | 初学一级 |园豆:37 | 2012-01-29 23:59
其他回答(3)
0

园子的这个博问搞的不行啊。不活跃啊。冷冷清清的。 博文倒很好。

好运 | 园豆:160 (初学一级) | 2012-01-20 13:20
支持(0) 反对(0) 好运 | 园豆:160 (初学一级) | 2012-01-20 13:41
0

不矛盾。

收获园豆:10
咒语 | 园豆:192 (初学一级) | 2012-01-20 16:38

谢谢回答。。。望给出具体事例解答。。。

支持(0) 反对(0) 好运 | 园豆:160 (初学一级) | 2012-01-20 16:39
0

不矛盾,高内聚是指关系很密切的东西要放一起,低耦合是指不要把没什么关系的东西揉在一起,所以如果把关系密切的东西分开,就不是低耦合,而是破坏了内聚。

这个我感觉不好从设计模式上来讲,高内聚低耦合相当于是OO的基本原则,设计模式站的层面更高点。

这个和SRP(单一职责原则)关系我感觉也很大,例如一个方法职责不单一,那也就意味着把不同职责的东西放在一起,不同的职责一般是没有太多联系的,所以,把它们放在一起就是高耦合。

而内聚,例如一个User类里有FirstName, LastName, FullName属性,FullName = FirstName + " " + LastName,如果把FullName写到一个其它的类中,例如所谓的UserBLL.GetFullName(User user),那就变成低内聚了,因为FullName和User关系是非常密切的。

收获园豆:20
水言木 | 园豆:386 (菜鸟二级) | 2012-01-23 20:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册