日期:2014-05-20  浏览次数:20782 次

高内聚低耦合的理解问题
新手正在学习设计思想,
想问:

高耦合和低内聚是对立(矛盾)的两面吗?还是两样不同的东西?

例如,如果说某个设计思路符合高内聚思想了,是否就意味着同时也符合低耦合了?

------解决方案--------------------
简单一点来说吧, 高内聚、低耦合讲的是程序单位协作的问题, 
你可以这样理解,一个企业的管理, 
最理想的情况就是各个部门各司其职,井然有序,互不干涉, 
但是需要沟通交流的时候呢, 
各个部门都可以找到接口人专门负责部门沟通以及对外沟通。

在软件里呢, 就是说各个模块要智能明确, 一个功能尽量由一个模块实现, 
同样,一个模块最好只实行一个功能。这个是所谓的“内聚”; 
模块与模块之间、系统与系统之间的交互,是不可避免的,
但是我们要尽量减少由于交互引起的单个模块无法独立使用或者无法移植的情况发生, 
尽可能多的单独提供接口用于对外操作, 这个就是所谓的“低耦合”。

但是实际的设计开发过程中,总会发生这样那样的问题与情况,
真正做到高内聚、低耦合是很难的,很多时候未必一定要这样,
更多的时候“最适合”的才是最好的,
不过,理解思想,审时度势地使用,
融会贯通,灵活运用,才是设计的王道。
------解决方案--------------------
掉了两个条件

对外低耦合,对内高内聚

这并不矛盾,实际就基于单一职责 这个原则

一个职责应该高内聚在一个对象里完成,而不应该在多个对象里完成

这样与这个职责相关的对象只有一个,对外来说他不依靠其他类,他对其他类来说是没有耦合的