回头再看N层架构(图解)
不知不覺來博客園已經(jīng)快兩半了,時間過的真快。
這次的目標是再回顧一下傳統(tǒng)的N層架構(gòu)并且分析一下在DDD中的N層架構(gòu)。
??? 一、先來看一看傳統(tǒng)的N層架構(gòu)
N-層架構(gòu)的出現(xiàn),主要是由于觀注點的分離而產(chǎn)生,這三層中BL層的職責一般比較難理清,具體請看下圖.
接下來我們關(guān)注一下層間交互(分離出角色與職責以后,如何交互將成為架構(gòu)或模式的主要特征)
然而在實際項目中我們也會出現(xiàn)這樣的狀況
這里存在一個反模式
?
二、傳統(tǒng)的N層架構(gòu)與DDD中N層架構(gòu)的關(guān)系
?
三、分層架構(gòu)的一個重要原則是:每層只能與位于其下方的層發(fā)生耦合,所以可以分為嚴格分層架構(gòu),如上面的圖中都是。另一種是松散分層架構(gòu)如下圖
?
四、采用依賴倒置的N層架構(gòu)
依賴倒置的兩個原則:
1 高層模塊不應(yīng)該依賴于低層模塊,丙都都應(yīng)該依賴于抽象。
2 抽象不應(yīng)該依賴于細節(jié),細節(jié)應(yīng)該依賴于抽象。
舉個例子:用戶接口層中定義了它需要訪問的基礎(chǔ)設(shè)施層的接口,而基礎(chǔ)設(shè)施層只要實現(xiàn)這個接口就好。
對于用戶接口層來說它依賴的是 它定義的基礎(chǔ)設(shè)施層的接口。而基礎(chǔ)設(shè)施層也依賴于這個接口。
由于使用依賴倒以后層間相互依賴于接口。實際上高層低層并不明顯,相當于把整個架構(gòu)都推平了。這也會后面的六邊形架構(gòu)
的引入奠定了基礎(chǔ)。但這里需要注意的一點就是在依賴倒置這幅圖中的用戶接口的交互行為,它已經(jīng)被限定了只能和應(yīng)用層交互。
再來看看六邊形架構(gòu)
這是具有一種對稱性特征的架構(gòu)風格
對稱性特征?=> 不同的客戶將通過"平等"的方式與系統(tǒng)交互。
這里主要講一下六邊形架構(gòu)的內(nèi)部,其實是依賴倒置后有一個交互限制的松散藕合的N層架構(gòu)。
?
簡單理了一下N層架構(gòu),并順代說了下DDD中的實現(xiàn)方式,完全是自己的理解,有對的肯定也有錯的,希望大家多提寶貴意見。
?
轉(zhuǎn)載于:https://www.cnblogs.com/dreamingsnail/p/4510023.html
總結(jié)
以上是生活随笔為你收集整理的回头再看N层架构(图解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中环境变量文件profile、
- 下一篇: 单独部署activemq-web-con