使用java實現軟體結構體系中的管道 過濾器模式

2021-09-25 05:16:27 字數 2181 閱讀 3147

在管道和過濾器軟體體系結構中,每個模組都有乙個輸入和乙個輸出。它採用流水線的方式對資料進行作業。類似我們生活中的管道,過濾器相當於管道上的閥門。我們在每個閥門上進行一定的資料計算,並將得到的結果傳遞給下個閥門。這種有序的資料處理就是我們所說的管道-過濾器模式。

它的優點在於可以將整個計算提示分解為多個計算行為的疊加組合,通過管道過濾器結構我們可以將複雜的計算分解,達到化煩為簡的目的。同時任意兩個過濾只要他們遵守同樣的要約,那麼他們就可以進行組合,這一點可以提高**的復用。同時過濾器的順序可以自由調節,程式設計靈活多變。學習管道過濾器模式我們需要了解兩個屬於

pipeline:管道,相當於車間的生產線,是一套明確的邏輯處理匯流排。

valve: 閥門,相當於生產線上的工人,負責完成各自職責內的工作。

那麼我們如何實現管道過濾器模式呢?

/**

* @author feianling

* @date 2019/7/12

*/public

inte***ce

pipeline

public

inte***ce

pipelinecontext

public

abstract

class

abstractvalve

}

public

class

standardpipeline

implements

pipeline

@override

public

boolean

setbases

(abstractvalve valve)

@override

public

boolean

addvalve

(abstractvalve valve)

@override

public

boolean

removevalve

(abstractvalve valve)

return

true;}

@override

public

void

invoke()

/** 定義乙個管道上下文內部類 實現管道上下文介面 */

private

class

standardpipelinecontext

implements

pipelinecontext

else}}

}

//首先定義乙個基礎的閥門

@slf4j

public

class

basevalve

extends

abstractvalve

", context);}

}//下面我們在定義幾個閥門來測試

@slf4j

public

class

valve1

extends

abstractvalve

", context);}

}@slf4j

public

class

valve2

extends

abstractvalve

", context);}

}@slf4j

public

class

valve3

extends

abstractvalve

", context);}

}

管道組裝**如下所示,我們預期的資料處理流轉是 閥門1 -> 閥門3 ->閥門2 -> 基礎閥門。

public

class

pipelinetest

}

通過執行main方法,列印結果如下。

如果你覺得本文還不錯,還請不吝打賞。

軟體體系結構 軟體體系結構概論

開學到現在我已經上了三節軟體體系結構的課程,現在我想把自己學到的整理歸納一下。此篇隨筆對應於教材軟體體系結構概論一章。首先談一談我剛接觸這門課程是的感受。那就是 我靠 軟體也會有體系結構?以前只學過資料結構 演算法 基本的程式語言,覺得程式設計無非就是使用者給我需求,我便按照需求來程式設計序就好,從...

軟體體系結構

軟體體系結構是具有一定形式的結構化元素,即構件的集合,包括處理構件 資料構建 連線構建。處理構建 負責對資料進行加工 資料構建 是被加工的資訊 連線構建 把體系結構的不同部分組合連線起來 1 作為通訊的手段 2 代表了早期的設計決策結果 3 高層次的設計復用手段 1 軟體體系結構是風險承擔者 又稱涉...

軟體體系結構 軟體體系結構複雜性

複雜性具有不同的種類和形態,一種簡明的度量是類之間通訊路徑的數量,通訊路徑是類之間存在的持久或暫時連線。複雜性存在四種維度的解釋 從適應能力的角度,認知複雜性度量可以增強可理解性質量,結構複雜性可以增強可維護性和可伸縮性質量。這兩種度量是有關係的,對於低結構複雜性,認知複雜性的較小值雖然是必要不充分...