管道-過濾器模式的體系結構是面向資料流的軟體體系結構。它最典型的應用是在編譯系統。乙個普通的編譯系統包括詞法分析器,語法分析器,語義分析與中間**生成器,優化器,目標**生成器等一系列對源程式進行處理的過程。人們可以將編譯系統看作一系列過濾器的連線體,按照管道-過濾器的體系結構進行設計。此外,這種體系結構在其它一些領域也有廣泛的應用。因此它成為軟體工程和軟體開發中的乙個突出的研究領域。
在管道,過濾器架構模式中,每個構件都有一組輸入,輸出,構件讀取輸入的資料流,經過內部處理後,產生輸出資料流,該過程主要完成輸入流的變換及增量計算。通常,將這裡的構件稱為過濾器,其中的聯結器就像是資料流傳輸的管道,將乙個過濾器的輸出傳送到另一過濾器的輸入。管道,過濾器輸出的正確性並不依賴於過濾器進行增量計算過程的順序。
管道-過濾器的組成
1 過濾器
過濾器按照對流經它的資料操作的不同,可分為3類過濾器:輸入過濾器,處理過濾器和輸出過濾器。下面將對這三類過濾器進行介紹。
(1)輸入過濾器
輸入過濾器處在問題所在的外部世界與軟體系統的邊界處,是系統資料流的源點。它負責接收外界資訊並轉化為系統所需的資料流。
(2)處理過濾器
處理過濾器是系統內變換資料流的部件,它有乙個入口和乙個出口,資料經入口流入,經過處理過濾器內部處理之後從出口流出。
(3)輸出過濾器
從建立完備的,首尾一致的可重用的軟體部件組的角度出發,正如輸入過濾器是系統資料流的起點,那麼輸出過濾器是資料流的終點。
過濾器的實現還須滿足以下三條基本原理:
隨後的處理單元從過濾器中拉出輸出資料;
前面的處理單元把新的輸入資料壓入過濾器;
過濾器以迴圈工作的方式,從流水線中拉出其輸入資料並且將其輸出資料壓入流水線。過濾器按照以上三種情況可分為兩類:主動過濾器和被動過濾器。滿足前兩種情況的過濾器稱為被動過濾器,滿足最後一種情況的過濾器稱為主動過濾器。
2 管道
管道作為過濾器之間資料流動的通道的軟體部件,它的主要功能是連線各個過濾器,充當過濾器之間資料流的通道。管道具有資料緩衝以及提高過濾器之間的並行性操作的作用。管道由資料緩衝區,向資料緩衝區讀和寫資料,判斷管道為空或已滿等操作定義組成
管道/過濾器模式的優點如下。
(l)體現了各功能模組的「黑盤」特性及高內聚、低耦合的特點。
(2)可以將整個系統的輸入,輸出行為看成是多個過濾器行為的簡單合成。
(3)支援軟體功能模組的重用。
(4)便於系統維護:新的過濾器可以新增到現有系統中來,舊的可以由改進的過濾器替換。
(5)支援某些特定的分析,如吞吐量計算、死鎖檢測等。
(6)支援並行操作,每個過濾器可以作為乙個單獨的任務完成。
管道,過漶器模式的缺點如下。
(1)通常導致系統處理過程的成批操作。
(2)需要設計者協調兩個相對獨立但又存在關係的資料流。
(3)可能需要每個過濾器自己完成資料解析和合成工作(如加密和解密),從而導致系統效能下降,並增加了過濾器具體實現的複雜性。
設計模式之過濾器模式
有時候我們需要在一堆物件的集合裡找到我們需要的物件,這種情況如果比較簡單的過濾,我們可以簡單的用if else去判斷,如果這種過濾是比較具有復用性質的過濾條件,例如在所有使用者裡篩選出成年人,還有就是在增加過濾條件的時候要去加if語句,不是特別的靈活,這個時候可以嘗試用過濾器模式去解決問題。值得一提...
設計模式之 過濾器模式
跳轉到 設計模式彙總 過濾器模式 1 從資料裡面找出想要的某些資料,邏輯相對簡單,也很常見,沒什麼好說的。2 這裡面唯一的一點東西是,得出的資料進行並 或運算.也沒啥,public abstract class vehicle public class car vehicle public clas...
設計模式 攔截過濾器模式
設計模式簡介 設計模式 design pattern 代表了最佳的實踐,通常被有經驗的物件導向的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。設計模式是一套被反覆使用的 多數人知曉的 經過...