パイプとフィルターシステムを作成できる小さなフレームワークがあります。私は流暢なインターフェースを使ってパイプとフィルターシステムを構築するという考えを持っていました:
PipeFilter pipeFilter = PipeFilter.StartBuild()
.AddFilter(new SomeFilter1())
.AddFilter(new SomeFilter2())
.AddFilter(new SomeFilter3())
.AddFilter(new SomeFilter4())
.Build();
示されているコードは期待どおりに機能します。システムの「写真」は次のとおりです。
SomeFilter1 -> SomeFilter2 -> SomeFilter3 -> SomeFilter4
現在、1 つの出力ではなく 2 つの出力を持つ一種のフィルターがあります。私はそれを呼びますbifurcation
。を使用したシステムの例を次に示しますbifurcation
。
|-> SomeFilter2 -> SomeFilter3
SomeFilter1 --|
|-> SomeFilter4
私はこのようなものを実装したいと思います:
PipeFilter pipeFilter = PipeFilter.StartBuild()
.AddFilter(new SomeFilter1())
.AddBifurcation()
.Output1()
.AddFilter(new SomeFilter2())
.AddFilter(new SomeFilter3())
.Output2()
.AddFilter(new SomeFilter4())
.Build();
しかし、私はそれを正しく理解できないようです。これは可能ですか?最初の例では、PipeFilterBuilder
(によって返されるPipeFilter.StartBuild()
) が必要でした。この 2 番目の例では、他の種類のビルダーを作成してミックスに取り入れようとしましたが、それは役に立たないようです。
言い忘れましたが、アイデアは、分岐を好きな場所にネストできるということです。つまり、枝でいっぱいの「木」を得ることができます!
誰でもこれで助けになれますか?