軟件架構模式之管道-過濾器模式--分析

  在管道-過濾器架構模式中,每一個構件都有一組輸入,輸出,構件讀取輸入的數據流,通過內部處理後,產生輸出數據流,該過程主要完成輸入流的變換及增量計算。這裏的構件就是過濾器,而鏈接過濾器的就是管道,這個管道將上一個過濾器處理的結果數據流傳送到下一個過濾器,在進行其餘的計算。架構

  簡單來講,管道-過濾器模式結構就像是一條產品加工流水線,原材料在流水線上通過一個個工人的加工,最終生產出產品。這裏的工人就是過濾器,將材料進行加工,流水線中的傳送帶就是管道,將一個工人加工過得材料傳送給下一個工人繼續加工。性能

  

      

 

應用場景優化

  1.由一個應用程序所需的處理能夠很容易地被分解成一組離散的,獨立的步驟。
  2.由應用程序執行的處理步驟具備不一樣的可擴展性要求。spa

優點設計

 

  (1)使得構件具備良好的隱蔽性和高內聚、低耦合的特色;

 

  (2)容許設計者將整個系統的輸入/輸出行爲當作是多個過濾器的行爲的簡單合成;

 

  (3)支持軟件重用。重要提供適合在兩個過濾器之間傳送的數據,任何兩個過濾器均可被鏈接起來;

 

  (4)系統維護和加強系統性能簡單。新的過濾器能夠添加到現有系統中來;舊的能夠被改進的過濾器替換掉;

 

  (5)容許對一些如吞吐量、死鎖等屬性的分析;

 

  (6)支持並行執行。每一個過濾器是做爲一個單獨的任務完成,所以可與其它任務並行執行;
案例

  編譯器就是基於管道過濾器模式設計的:
blog

  輸入:源程序
  預處理:負責宏展開和去掉註釋等工做。
  編譯:進行詞法分析、語法分析、語義分析、代碼優化和代碼產生。
  彙編:負責把彙編代碼轉換成機器指令,生成目標文件。
  連接:負責把多個目標文件、靜態庫和共享庫連接成可執行文件/共享庫。
  輸出:可執行文件/共享庫。編譯器

  編譯器的每一個步驟都是相互分離的,能夠獨立存在,每一個步驟完成以後獲得的結果交給下一個步驟進行處理,每一步的處理之間都依靠輸入輸出的數據流來維繫關係,正好符合管道-過濾器模式,而且每一個處理都只是依賴上一步處理的結果,並不依賴處理過程,因此程序的耦合度很低,內聚性很高,每一步都有很高的擴展性。產品

相關文章
相關標籤/搜索