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