パイプおよびフィルタは、モジュールを使用して、実装の容易さおよび関連モジュールの構成による汎用性を目的としたdivide-et-imperaのアプリケーションです。
ソースストリームまたはオブジェクトまたは信号のいくつかの処理実行を含む問題を解決し、変更されたストリームまたはオブジェクトまたは同じタイプの信号の生成を要求するときに最も有用です。
フィルタと呼ばれる単純な小さな処理単位に基づいており、すべて同じ契約に従います(同じオブジェクト/ストリームタイプとオプションのパラメータが入力で取得され、処理されたストリーム/オブジェクトが返されます)。各フィルタ入力は、フィルタ出力またはソース(ポンプ)に接続することができ、同様に各フィルタ出力をフィルタ入力またはアーキテクチャの戻りオブジェクト/蒸気に接続することができます(シンクと呼ばれます)。接続ユニットはパイプと呼ばれ、フィルタで行われた異なる処理ステップでストリーム/オブジェクト/信号をルーティングするためにマネージャクラスによって使用されます。
契約を指定することで、各フィルタは他のフィルタやフロー処理全体について何も知らずに自律的に動作することができます。つまり、フィルタを透過的に交換して、異なる最終結果を生成することもできます。
フィルタインスタンスは異なるストリームで同時に実行できますが、各フィルタはほとんど同じリソースへのアクセスを必要とするため、パイプとフィルタパターンは一般的に並行操作には使用されません。
- ソフトウェアの例:ギターとアンプの間で音声信号を処理するのペダル・エフェクト:画像処理
- 現実世界の例では、フィルタ。
フィルタは、すべて同じ契約(呼び出しと戻り)を持つことを除いて、実際には何も知らないため、透過的に交換できます(主に異なる結果オブジェクトをシンクに配信します)。 –
@guido互換性に関する優れた点。コメントの代わりに質問に「回答」してください – JAM