ponents)是軟件提供業(yè)務(wù)或技術(shù)功能的基本單元或元素,這些單元可以獨(dú)立地被部署、他們可以自我管理并且被虛擬部署到網(wǎng)絡(luò)的任何地方,業(yè)務(wù)組件((Business components)執(zhí)行業(yè)務(wù)邏輯、遵循一定的業(yè)務(wù)規(guī)則并且管理相應(yīng)的數(shù)據(jù)(數(shù)據(jù)庫操作稱為manage corporate data);而技術(shù)組件(Technical components)則提供相應(yīng)的平臺(tái)以便業(yè)務(wù)組件可以依賴其上運(yùn)行,例如權(quán)限、組件管理等。
JdonFramework/Spring都屬于一種技術(shù)組件框架,而我們具體項(xiàng)目的業(yè)務(wù)層代碼如果能夠提煉可以復(fù)用,則是業(yè)務(wù)組件;JdonFramework/Spring則都提供了業(yè)務(wù)組件賴于運(yùn)行的一些核心底層機(jī)制,特別是組件的管理,如組件的創(chuàng)建、組件的獲得、組件的資源管理、組件的消亡等生命周期支持,所以,我們可以在JdonFramework/Spring中加入自己的業(yè)務(wù)組件,當(dāng)然,JdonFramework還提供了Session等狀態(tài)管理的支持功能,為業(yè)務(wù)組件提供了更廣闊的生命周期支持。
組件復(fù)用技術(shù)以前是停留在編譯前期,也就是說:我們?cè)诰幊虝r(shí),導(dǎo)入所需要的其他組件Jar包,然后混同我們的項(xiàng)目編譯部署,但是這需要通過專業(yè)技術(shù)人員實(shí)現(xiàn),很顯然是不能適應(yīng)原則中第一句:給予人們可以裁剪他們系統(tǒng)的能力應(yīng)適應(yīng)需求變化,這里的“人們”應(yīng)該是指軟件最終用戶,應(yīng)該給予用戶自己改變系統(tǒng)的能力,也就是說:需要提供軟件系統(tǒng)運(yùn)行時(shí)能夠動(dòng)態(tài)改變自身的能力。
組件復(fù)用技術(shù)以前停留在軟件編譯階段,現(xiàn)在則更靠前,必須在軟件運(yùn)行階段,當(dāng)然對(duì)技術(shù)要求相當(dāng)高,需要語言支持RTTI(簡(jiǎn)單又神秘的Class.forName發(fā)揮作用了),這在"Evolution, Architecture, and Metamorphosis"一文中被認(rèn)為是Metamorphosis,現(xiàn)在由于AOP技術(shù)出現(xiàn),AOP有一種動(dòng)態(tài)Weaving技術(shù),實(shí)際就是在軟件運(yùn)行時(shí)實(shí)現(xiàn)動(dòng)態(tài)攔截,這樣給予終端用戶更大的改變系統(tǒng)能力,他們基本可以以動(dòng)態(tài)插拔的概念實(shí)現(xiàn)多個(gè)組件的組合運(yùn)行。在"AOP vs Decorator"一文中,我把編譯階段的組件組合方式(我更愿意稱為靜態(tài)組合)和運(yùn)行時(shí)組合等兩種處理方式,合并稱為過濾器模式,如果你希望采取組件可插拔式的復(fù)用,就可以使用過濾器模式。
組件可插拔更換
為什么說組件的可插拔非常重要?
組件重用目的是為了更好地適應(yīng)需求變化,但是有了組件重用不代表就快速適應(yīng)需求變化,因?yàn)榻M件本身也會(huì)產(chǎn)生設(shè)計(jì)錯(cuò)誤(提煉得不夠抽象或者組件很難以替代),這就必然導(dǎo)致軟件系統(tǒng)得維護(hù)成本提高,那么快速適應(yīng)需求變化的目標(biāo)也就成為一紙空文。實(shí)踐證明:組件設(shè)計(jì)問題已經(jīng)成為導(dǎo)致軟件開發(fā)失敗的一個(gè)主要因素。
組件設(shè)計(jì)有兩個(gè)主要風(fēng)險(xiǎn):組件提純的純度和組件的替代方式。提煉的純度也就是抽象的高度,組件的抽象程度越高,當(dāng)然可重用范圍越廣,但是往往我們只有經(jīng)歷多個(gè)項(xiàng)目后,才發(fā)現(xiàn)自己的組件提煉還欠火候,這實(shí)際是組件的提煉過程成本。
組件提練雖然取決于人為設(shè)計(jì)因素,但是在實(shí)現(xiàn)手段上也依賴于組件的替換方式,通過經(jīng)常反復(fù)頻繁的微調(diào)和更換,才能將組件不斷提煉向理想狀態(tài)靠攏,所以,必須有一種方便的組件替換方式提供頻繁更換支持,我們總不希望更換組件象以前更換汽車發(fā)動(dòng)機(jī)火花塞一樣,需要拆開汽車,打開發(fā)動(dòng)機(jī)那樣麻煩吧?
參考PC電腦硬件設(shè)計(jì):更新CPU或內(nèi)存條,只要直接插拔就可以,這些部件和母版都是一種松散的、可插拔的關(guān)系,如果軟件組件替換是動(dòng)態(tài)的可插拔更加方便終端用戶在軟件系統(tǒng)交付后,根據(jù)需求改變他們的系統(tǒng)。組件可插拔
項(xiàng)目經(jīng)理勝任力免費(fèi)測(cè)評(píng)PMQ上線啦!快來測(cè)測(cè)你排多少名吧~
http://opto-elec.com.cn/pmqhd/index.html