軟體的架構與設計模式:Layers模式

來源:互聯網
上載者:User
建築學的設計原則也應當成為軟體系統設計的指導原則。

  第一種情況

  這也就是最為熟知的情況。用戶端向第N層發出請求,而第N層不能獨立完成請求,需要調用第N-1層所提供的服務,第N-1層同樣需要他的下級,也就是N-2層所提供的服務。如此往複,直到第2層和第1層。

  第1層可以獨立完成自己的任務,它將執行的結果返還給第2層。第2層得到第1層的結果之後,便能夠繼續完成自己的任務了,它會把執行的結果繼續向上,也就是第3層傳遞。如此反覆,一直到第N-1層和第N層。


圖12、在有N個層次的架構中,請求(Request)沿著層次自上向下傳遞,結果(Result)自下向上傳遞。

  系統的用戶端只知道第N層,它向第N層發出請求,並且從第N層接到結果,用戶端並不知道其他層次的存在。參見。


圖13、用戶端只知道第N層,而不知道其他層次。

  第二種情況

  這第二種情況代表了自下至上的通訊,稱為通知(Notification)。這一系列的行為開始於第1層,這一層通過處理後,將通知向上傳給第2層,繼續向上傳遞到第3層,一直到第N-1層和第N層為止。參見。


圖14、在有N個層次的架構中,Notification沿著層次自下向上傳遞。

  使用過USB裝置的讀者知道,一旦把USB裝置插入到電腦中的時候,USB驅動軟體立刻就會發現裝置被啟用,並通知裝置的裝置操作軟體,裝置操作軟體便會啟動。這一系列的行為就是Notification自下向上傳遞的過程。

  在第一種情況中,請求首先向下傳遞,然後結果逆向傳遞,形成一個環形。在第二種情況中,Notification的傳遞是單向的。

  第三種情況

  這一種情況與第一種情況相似,只是僅涉及到一部分的層次而已。

  首先用戶端向第N層發出請求,而第N層不能獨立完成請求,需要調用第N-1層所提供的服務,第N-1層同樣需要他的下級,也就是N-2層所提供的服務。如此往複,直到第J層為止。

  第J層可以獨立完成自己的任務,而不再需要J-1層。它將執行的結果返還給第J+1層。第J+1層得到第J層的結果之後,便能夠繼續完成自己的任務了,它會把執行的結果繼續向上,也就是第J+2層傳遞。如此反覆,一直到第N-1層和第N層。參見。


圖15、在有N個層次的架構中,Request向上傳遞到某個中介層次就停止了,Result從那裡向下傳遞。

  同樣,用戶端只知道第N層,而不知道其他層次的存在。
第四種情況

  這種情況描述的是Notification自下向上傳遞的過程,只是第二種情況涉及到全部的N各層次,而這裡僅涉及到一部分的層次而已。參見。


圖16、Notification自第1層向上傳遞到某個中介層次就停止了,通訊過程是單向的。

  首先,全部的行為開始於第1層,這一層通過處理後,將通知向上傳給第2層,繼續向上傳遞到第3層,一直到第J層為止,不會再向上傳遞。

  第五種情況

  此種情況涉及到兩個階層,兩個結構之間相互連訊,常常稱作協議階層(Protocol Stacks)。在下面的圖中,左邊的第N層發出請求,這個請求向下傳遞,經過N-1層,…第2層直到第1層。

  這個時候,請求被接著傳遞給右邊的第1層,然後沿著階層向上傳遞,經過第2層,第3層等等,一直到第N-1層和第N層。


圖17、請求從左邊的第N層向下傳遞到第1層,然後傳遞到右邊。

  執行的結果自右邊的第N層開始向相反傳遞,經過右邊的第N-1層,N-2層,…第2層、第1層,然後返回到左邊的第1層,再沿著左邊的階層向上傳遞,經過第2層,第3層,…到達第N-1層,回到第N層。


圖18、結果從右邊的第N層向下傳遞到第1層,然後傳遞到左邊。

  兩端的用戶端A和B都只知道各自的第N層,而不知道其他層次,它們會認為在兩個層次之間存在一個連接,其實這個連接是虛擬,是通過其他層次進行的。


圖19、用戶端A發出請求給左邊的第N層,經過中間的過程之後,到達右邊的第N層,然後傳遞到右邊的客戶。

  TCP/IP的階層

  TCP/IP的設計顯然是依循層次原則設計的,參見。


圖20、TCP/IP的設計圖。

  無循環相依性原則(ADP)

  在層次的相互依賴關係中,不允許出現循環相依性關係。比如下面的圖中顯示了從第N層到第N-1層的依賴,從第N-1層到第J層的依賴,從第J層到第2層的依賴,從第2層到第1層的依賴;這都是沒有問題的。但是圖中還有一個從第J層到第N層的依賴關係。這就造成了一個迴圈的依賴關係,而這種循環相依性關係時應當避免的。


圖21、出現了循環相依性關係。

  假象每一層都由一個木板代表,木板一層壓著一層擺放。上層的木板就會依賴於下層的木板,這就是依賴關係。這樣的依賴關係是不可能迴圈的,因為歐幾裡德幾何學不會允許。如果硬要設計出循環相依性關係的話,就只好偽造幾何學,參見。


圖22、不可能的幾何:在三維歐幾裡德空間中無法實現這樣的幾何結構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.