但是,從可擴展性的角度來看,大連保險公司早會管理軟件設(shè)計才剛剛開始。事實上,前面的工作只是為軟件系統(tǒng)植入了一個可擴展功能的基因。這個基因是否可以產(chǎn)生真正符合要求的活體,還需要做不少工作。
下面,我列出了一些思考的內(nèi)容。這些思考內(nèi)容都比較具體,有特定的上下文,例如,語言、工具等,僅供讀者參考。
每個組件是一個Java項目,項目以該組件的根包名命名。
每個組件的interfaces包中定義了該組件對外提供的服務(wù)。
每個組件的internal包是組件功能的內(nèi)部實現(xiàn)。內(nèi)部實現(xiàn)分為core和ext兩個部分,core的部分通常較為穩(wěn)定,而ext的部分通常用于系統(tǒng)的二次開發(fā)。
接口類的命名為ICheck(檢查功能)、IInfo(獲取信息功能)、IEntry(對象模型數(shù)據(jù)的簡單更新功能)、IOperation(復(fù)雜的業(yè)務(wù)邏輯服務(wù))。
對外提供的服務(wù)(即接口類)的控制級別是一級,需要一定的工作流程來審批和實施。
致遠服軟認為:http://www.soft8.com.cn/core包是組件功能內(nèi)部實現(xiàn)中較為穩(wěn)定的部分,core包分為interfaces、impl、util三個部分。interfaces包中的接口是系統(tǒng)二次開發(fā)需要了解的主要內(nèi)容;util包提供一些與業(yè)務(wù)無關(guān)的類;impl包提供了支持接口的工廠類及對二次開發(fā)透明的缺省實現(xiàn)??傮w來說,util、interfaces和impl包中的工廠類是面向二次開發(fā)的API。這部分的控制級別是二級,在對已有二次開發(fā)內(nèi)容的基礎(chǔ)上進行再次更新的時候,需要一定的工作流程來審批和實施。在通常情況下,二次開發(fā)不會對core進行任何修改,在二次開發(fā)大連保險公司早會管理軟件結(jié)束后,統(tǒng)一對core進行版本的升級。
每個組件都包含統(tǒng)一的擴展模式。在ext目錄中包含ext.xml配置文件,用來將客戶化的實現(xiàn)注冊到core的工廠中。
根據(jù)以上的思考,我們輕松地建立了組件化開發(fā)的大連保險公司早會管理軟件代碼結(jié)構(gòu)。事實上,還有一些進行功能擴展時的約束。
組件的代碼結(jié)構(gòu)是什么樣子的呢?請看圖9-1。
為了滿足高內(nèi)聚性、低耦合性的要求,這個組件只能依賴于靜態(tài)領(lǐng)域模型,而不能依賴于其他組件(除第三方組件外)。該組件與其他大連保險公司早會管理軟件的關(guān)系只會發(fā)生在工作流引擎中。我把這一點作為后續(xù)設(shè)計和實現(xiàn)的原則。
接下來的事情很簡單、也尤為重要,那就是堅持自己確定的原則。如果堅持原則,一年之后,當大連供應(yīng)商關(guān)系 管理軟件系統(tǒng)進入維護期時,你將會從中受益。反之,前面的努力幾乎是無用功。
組件化開發(fā)的案例就介紹到這里。