2015-04-26 76 views
4

這兩種設計模式有什麼區別?看起來與我非常相似,一個處理單元(圖層或過濾器)執行一些數據處理並將數據拉入/推送到另一個處理單元。單元n只與n+1n-1單元通信,有接口定義一個特定單元提供的功能。圖層和管道和過濾器之間的區別?

有什麼區別?

編輯:也許一個區別應該是數據流。層中流可以是top-down,bottom-up和/或通信between裏面的一些層。在管道和過濾器中,數據流從單元1開始,並轉到單元n(不回)。

+0

我會說有巨大的概念差異。 (1)圖層模式更多的是構建一個堆棧。例如,採取典型的JEE,你從資源層開始,然後是數據,業務以演示結束。 (2)管道和過濾器用於逐步處理,轉換和過濾數據。一個例子是消息管道。 – Sivaramvt

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

4

組織方式明智,它可能看起來像圖層和管道和過濾器圖案是類似的(一個組件將輸入和傳遞結果到另一個),但在功能上它們不是。他們是建築模式。

如果我們通過定義

管道和過濾器模式分割一個較大的處理任務分成的由通道(管道)連接時,獨立的處理步驟(過濾器)的序列。

在層模式中,每層與相鄰層進行通信並負責其自身的一些處理,將請求傳遞到其下層,並回答來自其上層的請求。

比較

的管道和過濾器模式允許系統從稱爲過濾器的小程序來組裝分層系統是其中的系統的不同層採取的特定功能的護理系統。

一種過濾器具有輸入和具有良好定義的接口和應用程序中的一些衆所周知的依賴關係的輸出以分層的建築風格的每個層是一個包的軟件(或系統)。

將過濾器裝配成,其中每一個過濾器從所述先前的濾波器在鏈中獲得數據,處理該數據的鏈,並將該數據傳送到在分層系統中的鏈下一個過濾器而數據流可以是雙向的使得上面的圖層的所有請求都被滿足有或沒​​有幫助下面的圖層。

訂單可能無關緊要。例如您可以對消息進行身份驗證,然後過濾消息的內容,或者您​​可以先過濾內容,然後執行身份驗證而分層系統順序中的始終是相同的並且不能互換。

希望這會有所幫助。

-1

沒有結構性差異,只有意圖和隱喻的差異才能想起頭腦中的不同圖片。

分層體系結構(向上/向下隱喻)的意圖通常是關於通過不同抽象級別(例如,從業務級概念一直到低級網絡或數據庫操作,再返回。

管道和過濾器(管道隱喻)的意圖通常是關於類似抽象層次的變換。

相關問題