Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5057
  • 博文数量: 4
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-02 21:09
文章分类
文章存档

2014年(4)

我的朋友

分类: C/C++

2014-02-01 23:20:21

开发一个稍大一些的软件项目,大家肯定都会想到要划分成一些模块来做,也都会考虑所谓的“低耦合,高内聚”,但是对于模块之间以什么样的方式进行耦合才是低耦合,讨论的相对少一些。
通常的情况下,同一线程下模块间使用函数耦合的较多一些,例如模块A提供一个接口函数供模块B调用, 这种方式就是紧耦合,紧耦合是直接并且简单的,但是一个接口函数可能被多个其他模块调用,一接口函数变化,所有的模块都要修改。另外,这种方式也会在文件的包含和组织上带来一定的复杂性,例如函数引用,数据结构的定义等等。对于交互较多,接口经常变化的模块,这样的方式是不利于持续开发的。
相对于函数调用,还有一种以接口消息做为耦合的方式,可以称之为松耦合。例如有3个模块ABC,A不提供接口函数给B和C,当B或C需要A做某件事时向A发一个消息,A来完成相应的工作,这种方式的好处是接口变化的对其它模块的影响很小,模块之间除了接口消息之外完全独立,相互之间可以独立开发,模块可以在自身内部应对新功能和接口变化。这种方式也有他的缺点,就是实现的机制相对复杂一些,需要一个消息处理机制来完成接口功能,实际上是通过一个单独的接口消息处理模块对功能模块进行了隔离。在实现时可能需要考虑异步的问题,处理的场景更为复杂。
综合来说,对于简单的,规模较小,变化不多的程序,使用紧耦合更简单实用。反之,对于复杂的,规模较大,后续新功能开发要求高,易变化的项目,消息机制的松耦合将是最佳选择。

阅读(1312) | 评论(0) | 转发(0) |
0

上一篇:讨论一下Cygwin下如何让backspace发送^h

下一篇:没有了

给主人留下些什么吧!~~