2

私はこれら 2 つのパターンに頭を悩ませようとしていますが、類似点と相違点について疑問に思っています。どちらも段階的なプロセスを使用しているように見えるので、私には似ています。誰かがこれらの 2 つのパターンにもう少し光を当てることができますか? パイプとフィルターのパターンは大規模なアプリケーションで使用され、ビルダーのパターンは小規模なアプリケーションで使用されるというのは正しいですか? 少し先に進みますが、ビルダー パターンでは、すべてのステップが同時に行われますか。つまり、完成したオブジェクトが返される前にビルダーに渡されるすべての属性ですか?

ありがとう。

4

1 に答える 1

2

Pipes and Filtersパターンは Enterprise 統合パターンであり、 Builder パターンはオブジェクト指向設計パターンの 1 つです。

これら 2 つのパターンには、異なるセマンティクスがあります。

  • 異種システムからのメッセージに対して複雑な処理を実行するために使用されるパイプとフィルター。Through Pipes メッセージは Filters に送信されます。フィルターは、受信したメッセージを処理し、次のパイプを送信します。
  • ビルダーパターンは、オブジェクト作成のデザインパターンです。オブジェクトのセットを作成するプロセスが複数のステップで構成される場合に使用されます。

ご覧のとおり、これら 2 つのパターンを比較するのは正しくありません。ただし、これらは組み合わせて使用​​できます。Builder を使用して、メッセージ タイプの処理にどのフィルタが参加するかを設定できますT。その後、構成されたオブジェクトを使用できます。

  • メッセージが送信されるエンドポイント (パイプ) を作成するには

  • メッセージを処理するプロセス (または仮想マシンのインスタンス、アプリケーションによって異なります) を作成するには (これはフィルターになります)

たとえば、書籍販売システムがあるとします。

  • バイヤーは、一般と特権の 2 つのタイプに分けられます。
  • 特権ユーザーは N パーセントの割引を受けます。

この場合、パイプは TCP チャネルである可能性があり、フィルターは注文を処理します。

通常のユーザーの注文プロセスは次のとおりです。

  1. かごに本を追加する
  2. 認可
  3. カードからの出金

特権ユーザーの注文プロセス:

  1. かごに本を追加する
  2. 認可
  3. 割引の計算
  4. カードからの出金

ご覧のとおり、2 つのプロセスは 1 つのステップで互いに異なります。分岐プロセスは、ユーザーの承認後に発生します。ユーザーの承認後、フィルター #2 (承認) は特定のタイプ (特権ユーザーまたは通常ユーザー) のメッセージを生成して送信する必要があります。このメッセージを送信した後、さまざまなフィルターに反応する必要があります。特権ユーザー向けの割引計算や、一般ユーザー向けの出金用のフィルター。宣言的な方法でのこの構成は、Builder パターンを使用して記述できます。

于 2015-04-11T18:18:46.413 に答える