2016-12-21 5 views

答えて

4

Mediatorは、(2つ以上の)オブジェクトのグループ間の対話を制御するために第三者オブジェクトを追加する手法です。

最も簡単な例は、Chat Roomの例です。ChatRoomオブジェクトは、2つ(またはそれ以上)のユーザーオブジェクト間の相互作用を制御します。実際には、あなたはFacebookののようなWebアプリケーションは、それがウェブソケット開くチャットボックスのそれぞれについて、を作成見れば。したがって、実際にはWebソケットはメディエータ(サーバー)とクライアントと通信します。グループチャットが行われると、各クライアントは専用のWebソケットを使用してサーバーと同期します。

2

Gang of Fourは、GUIからサンプルを描画するのが好きなので、例はウィンドウ、ボタン、テキストペイン、リストボックスなどを中心に回転します。通信のスパイダーウェブ。 1つのメディエータとだけ通信するように各ウィジェットを制限することで、通信パターンが簡素化されます。同様の説明についてはanswerも参照してください。

例として、Gang of Four以外の例では、ログの有効なパターンとして、ファサードを参照しているメディエータとメディエータを対比させる質問の上位2つのanswersがあります。また、Spring Guruには、Spring Frameworkの例が記載されています。

Spring MVCでは、Spring MVCがDispatcherサーブレットとコントローラをどのように使用するかで、メディエータパターンの実際の例があります。

1

メディエータ・パターンの実装をメッセージング・サービスと呼びます。

Javaアプリケーションの2つのコンポーネントをJMS経由で通信したいとしましょう - コンポーネントAはJMSプロバイダに何らかの命令を含むメッセージを発行します。コンポーネントBは、メッセージを取り出して命令を実行するために、そのJMSプロバイダにサブクラス化する。コンポーネントAは、メディエータを介してコンポーネントBと通信している。

さらに多くの例がありますhere

3

ラジオタクシーは、メディエータのパターンの一例です。タクシードライバーは、お互いにではなく、メディエーター(ラジオタクシーコールセンター)と通信します。

タクシーが必要な場合は、ラジオタクシーコールセンターに電話します。すべてのタクシーには、タクシーが現在どこにあるかを示すGPSユニットがあり、また、どのタクシーが顧客に提供できるかを示す中央情報システムもある。コールセンターは、顧客のロケーションに最も近い利用可能なタクシーに連絡し、顧客にサービスするためにそれらを送信します。

は、一つは、ESB(エンタープライズサービスバス)は、本質的にMediatorパターンの大規模なアプリケーションであると言うことができるhttps://github.com/dstar55/100-words-design-patterns-java#Mediator

1

を見てみましょう。

0

もう1つの良い例は、RabbitMQオープンソースのメッセージブローカライブラリで、それを使用する複数のクライアント/アプリケーションの「メディエータ」として機能します。

ここで、クライアントまたはアプリケーションは、すべてのメッセージが誰によって消費されるのかを認識しません。 RabbitMQはメディエータとして機能し、購読しているクライアントにメッセージを発行します。

関連する問題