我理解的“切斷模塊之間的偶合特性”
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一個(gè)程序,可以分解成許多模塊。把程序的功能由許多行為組成,模塊就是相似行為的集合體。
然而,既然是一個(gè)程序,那么不同模塊的行為,相同模塊的行為之間,必然存在著一些聯(lián)系,行為之間相互關(guān)聯(lián)的操作,可以稱之為“耦合”,所長說的“偶合”應(yīng)為錯(cuò)別字。
程序大了,行為之間的耦合就象蜘蛛網(wǎng)似的復(fù)雜,沒頭沒尾,不同模塊的程序員之間不停打架。造成程序模塊化很差,維護(hù)性和可升級(jí)性以及可擴(kuò)展性很差。
換個(gè)角度理解,行為可以歸納為:發(fā)生什么事就干什么,一個(gè)行為觸發(fā)的條件是發(fā)生了某某事,這就是事件,也可以稱之為消息。
通過分解行為和定義消息,可以把程序間的耦合降解,降所有行為映射為事件,程序員只關(guān)心三件事:1、是否發(fā)生了我編寫的行為代碼對(duì)應(yīng)的消息,2、我是否產(chǎn)生了消息需要發(fā)出,3、用代碼實(shí)現(xiàn)自己的行為。程序員再也不需要去關(guān)注別的模塊干什么了,也不用和別的程序員爭(zhēng)論了。系統(tǒng)設(shè)計(jì)師也只需要把程序分解為行為,并規(guī)定事件格式就可以了。
所謂的“消息非實(shí)時(shí)性”,是有歧義的,可以理解為:當(dāng)行為A產(chǎn)生一個(gè)事件,需要由行為B處理時(shí),行為A僅僅發(fā)出消息,但行為B有沒有處理,處理是否及時(shí),一概不知,那么當(dāng)然不能保證實(shí)時(shí)性了。但是,嵌入式實(shí)時(shí)操作系統(tǒng)解決了這個(gè)問題,實(shí)時(shí)性由系統(tǒng)保證,不需要行為A和行為B來保證,這也是實(shí)時(shí)操作系統(tǒng)的價(jià)值之一。
消息所代表的是一個(gè)軟件系統(tǒng)設(shè)計(jì)思想,與實(shí)現(xiàn)方式無關(guān),就算哪位同學(xué)高明,不需要隊(duì)列解決也是可以的。fsaok同學(xué)無需較真,當(dāng)資源有限時(shí),例如你說的51,隊(duì)列可以做得很簡(jiǎn)單,但對(duì)系統(tǒng)設(shè)計(jì)師得限制也就大一些。
原文討論帖 http://www.21icbbs.com/club/bbs/list.asp?boardid=11&page=1&t=1496942&tp=%u8C08%u8C08%u6D88%u606F