架構設計模式之管道——過濾器模式


管道-過濾器模式的體系結構是面向數據流的軟件體系結構。它最典型的應用是在編譯系統。一個普通的編譯系統包括詞法分析器,語法分析器,語義分析與中間代碼生成器,優化器,目標代碼生成器等一系列對源程序進行處理的過程。人們可以將編譯系統看作一系列過濾器的連接體,按照管道-過濾器的體系結構進行設計。此外,這種體系結構在其它一些領域也有廣泛的應用。因此它成為軟件工程和軟件開發中的一個突出的研究領域。

在管道,過濾器架構模式中,每個構件都有一組輸入,輸出,構件讀取輸入的數據流,經過內部處理后,產生輸出數據流,該過程主要完成輸入流的變換及增量計算。通常,將這里的構件稱為過濾器,其中的連接器就像是數據流傳輸的管道,將一個過濾器的輸出傳送到另一過濾器的輸入。管道,過濾器輸出的正確性並不依賴於過濾器進行增量計算過程的順序。

管道-過濾器的組成

1 過濾器

過濾器按照對流經它的數據操作的不同,可分為3類過濾器:輸入過濾器,處理過濾器和輸出過濾器。下面將對這三類過濾器進行介紹。

(1)輸入過濾器

輸入過濾器處在問題所在的外部世界與軟件系統的邊界處,是系統數據流的源點。它負責接收外界信息並轉化為系統所需的數據流。

(2)處理過濾器

處理過濾器是系統內變換數據流的部件,它有一個入口和一個出口,數據經入口流入,經過處理過濾器內部處理之后從出口流出。

(3)輸出過濾器

從建立完備的,首尾一致的可重用的軟件部件組的角度出發,正如輸入過濾器是系統數據流的起點,那么輸出過濾器是數據流的終點。

過濾器的實現還須滿足以下三條基本原理:

隨后的處理單元從過濾器中拉出輸出數據;

前面的處理單元把新的輸入數據壓入過濾器;

過濾器以循環工作的方式,從流水線中拉出其輸入數據並且將其輸出數據壓入流水線。過濾器按照以上三種情況可分為兩類:主動過濾器和被動過濾器。滿足前兩種情況的過濾器稱為被動過濾器,滿足最后一種情況的過濾器稱為主動過濾器。

2 管道

管道作為過濾器之間數據流動的通道的軟件部件,它的主要功能是連接各個過濾器,充當過濾器之間數據流的通道。管道具有數據緩沖以及提高過濾器之間的並行性操作的作用。管道由數據緩沖區,向數據緩沖區讀和寫數據,判斷管道為空或已滿等操作定義組成

 

管道/過濾器模式的優點如下。

(l)體現了各功能模塊的“黑盤”特性及高內聚、低耦合的特點。

(2)可以將整個系統的輸入,輸出行為看成是多個過濾器行為的簡單合成。

(3)支持軟件功能模塊的重用。

(4)便於系統維護:新的過濾器可以添加到現有系統中來,舊的可以由改進的過濾器替換。

(5)支持某些特定的分析,如吞吐量計算、死鎖檢測等。

(6)支持並行操作,每個過濾器可以作為一個單獨的任務完成。

管道,過漶器模式的缺點如下。

(1)通常導致系統處理過程的成批操作。

(2)需要設計者協調兩個相對獨立但又存在關系的數據流。

(3)可能需要每個過濾器自己完成數據解析和合成工作(如加密和解密),從而導致系統性能下降,並增加了過濾器具體實現的復雜性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM