低耦合高内聚

软件架构设计的目的简单说就是在保持软件内在联系的前提下,分解软件系统,降低软件系统开发的复杂性,而分解软件系统的基本方法无外乎分层和分割。但是在保持软件内在联系的前提下,如何分层分割系统,分层分割到什么样的力度,并不是一件容易的事,这方面有各种各样的分解方法,比如:关注点分离,面向方面,面向对象,面向接口,面向服务,依赖注入,以及各种各样的设计原则等,

耦合可以分为以下几种,它们之间的耦合度由高到低排列如下:

(1) 内容耦合:有下列情形之一,两个模块就发生了内容耦合:

  *一个模块访问另一个模块的内部数据

  *一个模块不通过正常入口而转到另一个模块的内部

  *一个模块有多个入口

(2) 公共耦合:当两个或多个模块通过公共数据环境相互作用时,他们之间的耦合称为公共环境耦合。

(3) 控制耦合:如果两个模块通过参数交换信息,交换的信息有控制信息,那么这种耦合就是控制耦合。

(4) 特征耦合:如果被调用的模块需要使用作为参数传递进来的数据结构中的所有数据时,那么把这个数据结构作为参数整体传送是完全正确的。但是,当把整个数据结构作为参数传递而使用其中一部分数据元素时,就出现了特征耦合。在这种情况下,被调用的模块可以使用的数据多于它确实需要的数据,这将导致对数据的访问失去控制,从而给计算机犯错误提供机会。

(5) 数据耦合:如果两个模块通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合就是数据耦合。

内聚有如下的种类,它们之间的内聚度由弱到强排列如下:

(1) 偶然内聚:模块中的代码无法定义其不同功能的调用。但它使该模块能执行不同的功能,这种模块称为巧合强度模块。

(2) 逻辑内聚。这种模块把几种相关的功能组合在一起, 每次被调用时,由传送给模块参数来确定该模块应完成哪一种功能

  (3) 时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。

  (4) 过程内聚:构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。

  (5) 通信内聚:指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据。

  (6) 顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素输出就是下一功能元素的输入。

(7) 功能内聚:共同完成同一功能,缺一不可,模块不可再分割。

高内聚,低耦合的系统有什么好处呢?事实上,短期来看,并没有很明显的好处,甚至短期内会影响系统的开发进度,因为高内聚,低耦合的系统对开发设计人员提出了更高的要求。高内聚,低耦合的好处体现在系统持续发展的过程中,高内聚,低耦合的系统具有更好的重用性,维护性,扩展性,可以更高效的完成系统的维护开发,持续的支持业务的发展,而不会成为业务发展的障碍。

posted @ 2017-07-12 10:57  御虫师  阅读(400)  评论(0编辑  收藏  举报