我理解的“切断模块之间的偶合特性”
扫描二维码
随时随地手机看文章
一个程序,可以分解成许多模块。把程序的功能由许多行为组成,模块就是相似行为的集合体。
然而,既然是一个程序,那么不同模块的行为,相同模块的行为之间,必然存在着一些联系,行为之间相互关联的操作,可以称之为“耦合”,所长说的“偶合”应为错别字。
程序大了,行为之间的耦合就象蜘蛛网似的复杂,没头没尾,不同模块的程序员之间不停打架。造成程序模块化很差,维护性和可升级性以及可扩展性很差。
换个角度理解,行为可以归纳为:发生什么事就干什么,一个行为触发的条件是发生了某某事,这就是事件,也可以称之为消息。
通过分解行为和定义消息,可以把程序间的耦合降解,降所有行为映射为事件,程序员只关心三件事:1、是否发生了我编写的行为代码对应的消息,2、我是否产生了消息需要发出,3、用代码实现自己的行为。程序员再也不需要去关注别的模块干什么了,也不用和别的程序员争论了。系统设计师也只需要把程序分解为行为,并规定事件格式就可以了。
所谓的“消息非实时性”,是有歧义的,可以理解为:当行为A产生一个事件,需要由行为B处理时,行为A仅仅发出消息,但行为B有没有处理,处理是否及时,一概不知,那么当然不能保证实时性了。但是,嵌入式实时操作系统解决了这个问题,实时性由系统保证,不需要行为A和行为B来保证,这也是实时操作系统的价值之一。
消息所代表的是一个软件系统设计思想,与实现方式无关,就算哪位同学高明,不需要队列解决也是可以的。fsaok同学无需较真,当资源有限时,例如你说的51,队列可以做得很简单,但对系统设计师得限制也就大一些。
原文讨论帖 http://www.21icbbs.com/club/bbs/list.asp?boardid=11&page=1&t=1496942&tp=%u8C08%u8C08%u6D88%u606F