在管道-過濾器架構模式中,每一個構件都有一組輸入,輸出,構件讀取輸入的數據流,通過內部處理後,產生輸出數據流,該過程主要完成輸入流的變換及增量計算。這裏的構件就是過濾器,而鏈接過濾器的就是管道,這個管道將上一個過濾器處理的結果數據流傳送到下一個過濾器,在進行其餘的計算。架構
簡單來講,管道-過濾器模式結構就像是一條產品加工流水線,原材料在流水線上通過一個個工人的加工,最終生產出產品。這裏的工人就是過濾器,將材料進行加工,流水線中的傳送帶就是管道,將一個工人加工過得材料傳送給下一個工人繼續加工。性能
應用場景優化
1.由一個應用程序所需的處理能夠很容易地被分解成一組離散的,獨立的步驟。
2.由應用程序執行的處理步驟具備不一樣的可擴展性要求。spa
優點設計
編譯器就是基於管道過濾器模式設計的:
blog
輸入:源程序
預處理:負責宏展開和去掉註釋等工做。
編譯:進行詞法分析、語法分析、語義分析、代碼優化和代碼產生。
彙編:負責把彙編代碼轉換成機器指令,生成目標文件。
連接:負責把多個目標文件、靜態庫和共享庫連接成可執行文件/共享庫。
輸出:可執行文件/共享庫。編譯器
編譯器的每一個步驟都是相互分離的,能夠獨立存在,每一個步驟完成以後獲得的結果交給下一個步驟進行處理,每一步的處理之間都依靠輸入輸出的數據流來維繫關係,正好符合管道-過濾器模式,而且每一個處理都只是依賴上一步處理的結果,並不依賴處理過程,因此程序的耦合度很低,內聚性很高,每一步都有很高的擴展性。產品