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