標籤:架構 結構 設計 軟體
看了一整晚,不甚理解管道/過濾器。常見的案例Linux命令管道是比較好理解的,但加之混亂的主動/被動的動態概念,就不太好理解了。暫先整理筆記,後面再回顧。
這是看的第2類體繫結構,不是有所收穫:大致可抽象出一些常見設計的範式
1、體繫結構現過程關鍵點:拆、定義介面/格式、合、出錯處理
2、優點關註:重用度 “考慮到一般變更的設計是優秀系統深化的一個主要助推器”
【概述】
管道和過濾器(Pipes and Filters)為
處理資料流的系統提供了一種結構。每個處理步驟封裝在一個過濾器組件中,資料通過相鄰過濾器之間的管道傳輸。重組過濾器可以建立相關係統族。
【細節】例子 -- Java語言的解析過程(詞法分析,文法分析,語義分析,中間代碼產生,中間代碼最佳化)語境 -- 處理資料流問題 -- 存在不同的輸入資料來源;想要達到未來可靈活重新排列步驟,需要提前做好規劃;不相連的處理步驟不共用資訊etc解決方案 -- 將系統任務分成幾個順序的處理步驟。結構 --1、隨後的流水線單元從過濾器中拉出輸出資料(被動過濾器)2、前面的流水線單元把新的輸入資料壓入過濾器(被動過濾器)3、最常用的,過濾器以迴圈方式工作,從流水線中拉出其輸入資料並且將其輸出資料壓入流水線(主動過濾器)
過濾器,職責:獲得輸入資料;在其輸入資料上執行1個函數;供給輸出資料管道表示過濾器之間的串連,職責:轉化資料,緩衝資料,同步主動鄰居
動態特性 -- 主動被動過濾器之區分(暫搞不懂)實現 -- 1、為把系統任務分成一系列處理階段2、定義沿每個管道傳輸的資料格式3、決定如何?每個管道串連4、設計和實現過濾器5、設計出錯處理6、建立處理流水線
已解決的例子 -- TCP/IP協議已知使用:Unix流水線任務:程式編譯、文檔建立效果 --優點:不一定需要中間檔案、過濾器交換/重組靈活性、重用、快速原型、平行處理效率不足:共用狀態資訊昂貴/不靈活、平行處理效率未必高、資料轉換額外開銷、錯誤處理
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
面向模式的軟體體繫結構(3)--管道與過濾器