新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 軟件架構(gòu)設(shè)計(jì)之常用架構(gòu)模式介紹

軟件架構(gòu)設(shè)計(jì)之常用架構(gòu)模式介紹

作者: 時(shí)間:2011-06-22 來源:網(wǎng)絡(luò) 收藏

1.是使用最多的架構(gòu)模式,通過分層使各個(gè)層的職責(zé)更加明確,通過定義的接口使各層之間通訊,上層使用下層提供的服務(wù)。分層分為:嚴(yán)格意義上的分層,一般意義的分層。嚴(yán)格意義的分層是n+1層使用n層的服務(wù)。而一般意義的分層是上層能夠使用它下邊所有層的服務(wù)。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的分層定義:UI層,UI控制層,服務(wù)層,領(lǐng)域?qū)?,基礎(chǔ)設(shè)施層。

本文引用地址:http://m.butianyuan.cn/article/257865.htm

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)一個(gè)web請(qǐng)求來了以后View接收這個(gè)請(qǐng)求,隨即把請(qǐng)求轉(zhuǎn)發(fā)給Control進(jìn)行處理,Control通過分析請(qǐng)求的類型等信息決定加載哪些Model,當(dāng)Model加載完成以后Control通知Model已經(jīng)加載完畢,這是View就去讀取Model數(shù)據(jù)進(jìn)行顯示自己。MVC還有一個(gè)衍生架構(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è)衍生架構(gòu)叫MVVP,就是增加了一個(gè)ViewControl的層,用來輔助視圖的生成,這樣View的功能更加簡單只是用來顯示不包含其它的功能,而且有了ViewControl使多視圖或替換視圖很方便。MVP微軟的WPF就是使用這種架構(gòu)。

3.就是做一個(gè)穩(wěn)定通用的內(nèi)核,也就是給軟件設(shè)計(jì)一個(gè)強(qiáng)勁的心臟。如果需要更多功能通過在內(nèi)核外部再封裝一層對(duì)軟件進(jìn)行擴(kuò)充,微內(nèi)核提供基本的接口供外部調(diào)用,這些接口一定要通用,并且提供事件的機(jī)制告訴外部內(nèi)部發(fā)生的事件,這樣就是內(nèi)核與外部完全隔離。微軟操作系統(tǒng)就是按照微內(nèi)核設(shè)計(jì)的。我之前做了一個(gè)Gis組件當(dāng)初思想也是這個(gè)樣子的,但是當(dāng)初不知道還有,有了對(duì)微內(nèi)核的深入理解會(huì)進(jìn)一步完善那個(gè)Gis組件。

4.元模型架構(gòu):元模型架構(gòu)就是有元數(shù)據(jù)支撐的架構(gòu),現(xiàn)在使用的也很廣泛,比如:ORM,.Net 類的設(shè)計(jì)等都是元數(shù)據(jù)支持的。元數(shù)據(jù)有自我描述性比如ORM會(huì)描述類對(duì)應(yīng)數(shù)據(jù)庫中的表屬性對(duì)應(yīng)數(shù)據(jù)庫里的字段,還有IOC類中的引用需要注入哪個(gè)類等等都會(huì)通過元數(shù)據(jù)的形式實(shí)現(xiàn)。IOC框架通過解析元數(shù)據(jù)信息使注入和被注入類只通過接口依賴,這樣替換注入類很方便。元數(shù)據(jù)架構(gòu)是很靈活的架構(gòu),可發(fā)展空間非常大,元數(shù)據(jù)架構(gòu)會(huì)經(jīng)常用反射技術(shù)或者動(dòng)態(tài)代碼生成技術(shù)。我之前做了一個(gè)ORM就是用到的元數(shù)據(jù)架構(gòu),我還想給ORM添加依賴注入面向切面編程等特性都很方便的。

5.管道-過濾器架構(gòu):這個(gè)模式就像是工廠的流水線,生產(chǎn)原料通過流水線經(jīng)過很多環(huán)節(jié)進(jìn)行處理變成產(chǎn)品。軟件也是一樣的,網(wǎng)絡(luò)OSI7層就是消息通過管道內(nèi)部的很多步處理對(duì)消息進(jìn)行加工過濾轉(zhuǎn)換。再舉一個(gè)例子,兩家企業(yè)需要信息交換,但是企業(yè)的信息格式和描述規(guī)則都不相同,如果想達(dá)到交換必須經(jīng)過處理,所以我們就得用管道過濾器模式,通過管道過濾器模式信息進(jìn)入管道我們會(huì)在管道里添加各種處理功能,比如:數(shù)據(jù)驗(yàn)證,信息加密,信息解密,信息壓縮,信息解壓縮,格式轉(zhuǎn)換等功能,對(duì)消息進(jìn)行處理以符合我們要求的消息格式,而且如果需要添加一個(gè)新的處理只要把處理的功能插入到管道中即可,這樣達(dá)到最大的靈活性。應(yīng)用此模式的有:ASP.net請(qǐng)求模型,Spring 對(duì)象構(gòu)造,Structs 數(shù)據(jù)請(qǐng)求等。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉