軟件架構設計之常用架構模式介紹
1.分層架構:分層架構是使用最多的架構模式,通過分層使各個層的職責更加明確,通過定義的接口使各層之間通訊,上層使用下層提供的服務。分層分為:嚴格意義上的分層,一般意義的分層。嚴格意義的分層是n+1層使用n層的服務。而一般意義的分層是上層能夠使用它下邊所有層的服務。領域驅(qū)動設計的分層定義:UI層,UI控制層,服務層,領域?qū)?,基礎設施層。
2.MVC架構:MVC架構相信做軟件的都聽說,主要是為了讓軟件的各部分松耦合,現(xiàn)在好多根據(jù)MVC思想構建的框架如:Spring MVC,Structs2,ASP.Net MVC等。MVC是Model View Control的簡寫,他的原理是什么那,比如拿web來舉例吧。當一個web請求來了以后View接收這個請求,隨即把請求轉(zhuǎn)發(fā)給Control進行處理,Control通過分析請求的類型等信息決定加載哪些Model,當Model加載完成以后Control通知Model已經(jīng)加載完畢,這是View就去讀取Model數(shù)據(jù)進行顯示自己。MVC還有一個衍生架構叫MVP,因為MVC的View跟Control和Model都有耦合關系所以為了解除View和Model之間的關系,View不直接讀取Model而是通過Control來轉(zhuǎn)發(fā)View需要的數(shù)據(jù)。還有一個衍生架構叫MVVP,就是增加了一個ViewControl的層,用來輔助視圖的生成,這樣View的功能更加簡單只是用來顯示不包含其它的功能,而且有了ViewControl使多視圖或替換視圖很方便。MVP微軟的WPF就是使用這種架構。
3.微內(nèi)核架構:微內(nèi)核架構就是做一個穩(wěn)定通用的內(nèi)核,也就是給軟件設計一個強勁的心臟。如果需要更多功能通過在內(nèi)核外部再封裝一層對軟件進行擴充,微內(nèi)核提供基本的接口供外部調(diào)用,這些接口一定要通用,并且提供事件的機制告訴外部內(nèi)部發(fā)生的事件,這樣就是內(nèi)核與外部完全隔離。微軟操作系統(tǒng)就是按照微內(nèi)核設計的。我之前做了一個Gis組件當初思想也是這個樣子的,但是當初不知道還有微內(nèi)核架構,有了對微內(nèi)核的深入理解會進一步完善那個Gis組件。
4.元模型架構:元模型架構就是有元數(shù)據(jù)支撐的架構,現(xiàn)在使用的也很廣泛,比如:ORM,.Net 類的設計等都是元數(shù)據(jù)支持的。元數(shù)據(jù)有自我描述性比如ORM會描述類對應數(shù)據(jù)庫中的表屬性對應數(shù)據(jù)庫里的字段,還有IOC類中的引用需要注入哪個類等等都會通過元數(shù)據(jù)的形式實現(xiàn)。IOC框架通過解析元數(shù)據(jù)信息使注入和被注入類只通過接口依賴,這樣替換注入類很方便。元數(shù)據(jù)架構是很靈活的架構,可發(fā)展空間非常大,元數(shù)據(jù)架構會經(jīng)常用反射技術或者動態(tài)代碼生成技術。我之前做了一個ORM就是用到的元數(shù)據(jù)架構,我還想給ORM添加依賴注入面向切面編程等特性都很方便的。
5.管道-過濾器架構:這個模式就像是工廠的流水線,生產(chǎn)原料通過流水線經(jīng)過很多環(huán)節(jié)進行處理變成產(chǎn)品。軟件也是一樣的,網(wǎng)絡OSI7層就是消息通過管道內(nèi)部的很多步處理對消息進行加工過濾轉(zhuǎn)換。再舉一個例子,兩家企業(yè)需要信息交換,但是企業(yè)的信息格式和描述規(guī)則都不相同,如果想達到交換必須經(jīng)過處理,所以我們就得用管道過濾器模式,通過管道過濾器模式信息進入管道我們會在管道里添加各種處理功能,比如:數(shù)據(jù)驗證,信息加密,信息解密,信息壓縮,信息解壓縮,格式轉(zhuǎn)換等功能,對消息進行處理以符合我們要求的消息格式,而且如果需要添加一個新的處理只要把處理的功能插入到管道中即可,這樣達到最大的靈活性。應用此模式的有:ASP.net請求模型,Spring 對象構造,Structs 數(shù)據(jù)請求等。