<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 軟件架構設計之常用架構模式介紹

軟件架構設計之常用架構模式介紹

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

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

本文引用地址:http://dyxdggzs.com/article/257865.htm

2.MVC架構:MVC架構相信做軟件的都聽(tīng)說(shuō),主要是為了讓軟件的各部分松耦合,現在好多根據MVC思想構建的框架如:Spring MVC,Structs2,ASP.Net MVC等。MVC是Model View Control的簡(jiǎn)寫(xiě),他的原理是什么那,比如拿web來(lái)舉例吧。當一個(gè)web請求來(lái)了以后View接收這個(gè)請求,隨即把請求轉發(fā)給Control進(jìn)行處理,Control通過(guò)分析請求的類(lèi)型等信息決定加載哪些Model,當Model加載完成以后Control通知Model已經(jīng)加載完畢,這是View就去讀取Model數據進(jìn)行顯示自己。MVC還有一個(gè)衍生架構叫MVP,因為MVC的View跟Control和Model都有耦合關(guān)系所以為了解除View和Model之間的關(guān)系,View不直接讀取Model而是通過(guò)Control來(lái)轉發(fā)View需要的數據。還有一個(gè)衍生架構叫MVVP,就是增加了一個(gè)ViewControl的層,用來(lái)輔助視圖的生成,這樣View的功能更加簡(jiǎn)單只是用來(lái)顯示不包含其它的功能,而且有了ViewControl使多視圖或替換視圖很方便。MVP微軟的WPF就是使用這種架構。

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

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

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>