Pipes and Filtersパターンは Enterprise 統合パターンであり、 Builder パターンはオブジェクト指向設計パターンの 1 つです。
これら 2 つのパターンには、異なるセマンティクスがあります。
- 異種システムからのメッセージに対して複雑な処理を実行するために使用されるパイプとフィルター。Through Pipes メッセージは Filters に送信されます。フィルターは、受信したメッセージを処理し、次のパイプを送信します。
- ビルダーパターンは、オブジェクト作成のデザインパターンです。オブジェクトのセットを作成するプロセスが複数のステップで構成される場合に使用されます。
ご覧のとおり、これら 2 つのパターンを比較するのは正しくありません。ただし、これらは組み合わせて使用できます。Builder を使用して、メッセージ タイプの処理にどのフィルタが参加するかを設定できますT
。その後、構成されたオブジェクトを使用できます。
たとえば、書籍販売システムがあるとします。
- バイヤーは、一般と特権の 2 つのタイプに分けられます。
- 特権ユーザーは N パーセントの割引を受けます。
この場合、パイプは TCP チャネルである可能性があり、フィルターは注文を処理します。
通常のユーザーの注文プロセスは次のとおりです。
- かごに本を追加する
- 認可
- カードからの出金
特権ユーザーの注文プロセス:
- かごに本を追加する
- 認可
- 割引の計算
- カードからの出金
ご覧のとおり、2 つのプロセスは 1 つのステップで互いに異なります。分岐プロセスは、ユーザーの承認後に発生します。ユーザーの承認後、フィルター #2 (承認) は特定のタイプ (特権ユーザーまたは通常ユーザー) のメッセージを生成して送信する必要があります。このメッセージを送信した後、さまざまなフィルターに反応する必要があります。特権ユーザー向けの割引計算や、一般ユーザー向けの出金用のフィルター。宣言的な方法でのこの構成は、Builder パターンを使用して記述できます。