タイトルにあるように、メディエーターデザインパターンの使用をいつ推奨しますか。また、どこで誤って使用されていると思いますか。
3 に答える
オブジェクト通信の複雑さがオブジェクトの再利用を妨げ始めたら、メディエータを使用します。このタイプの複雑さは、実際にはどこにでもある可能性がありますが、多くの場合、ビュー インスタンスに現れます。
メディエーターを誤用すると、メディエーターの同僚クラスのインターフェースが機能しなくなる可能性があります。
パターンの悪用について話すのは少しおかしいようです。実装がパターンに従っていれば、そのパターンを使用したことになります。そうでなければ、そうではありません。つまり、メディエーターが何か他のことをしている場合、それはおそらくメディエーターではありません。パターンは、それが何をするか、実際には何なのかによって定義されます。物の名前は単なるラベルです。
自問すべき本当の問題は、パターンの実装が設計に対するパターンの約束を満たしているかどうかです。メディエーター パターンは、複雑なオブジェクト間通信が管理不能になったときにカプセル化することを目的としています。これを達成していない、またはあまりうまく行っていない場合は、メディエーターが悪用されていると言えます。ある時点で、それは価値判断になります。
私はスイングアプリを扱うためにそれを使用しました。
GUIを構築しているとき、サブクラス化が必要になるため、各コントロールがお互いを知っているのは好きではありません。
代わりに、リスナーとウィジェットを含むMainオブジェクトがあり、さまざまなコントロール、ボタン、テキストフィールドなどの間を仲介します。
メディエーターは、基本的にイベントポンプと同じです。GUI やゲームで非常に一般的なパターンです。
また、私は以前にメディエーターを使用して、非常に分散したシステムとレガシーフレームワークの間で通信しました。