7.10
イベントアグリゲーターとメディエーター
179
密接に結合させてしまうと、長期的に見てこのコードの保守は非常に難しくなるでしょう。代わり
にイベントアグリゲーターを使って
menu:click:foo
のようなイベントを発生させ、すると
foo
オブジェクトがこのイベントを解釈してコンテンツを表示させるというやり方にするべきです。
7.10.6.2
メディエーターを使うべき場合
複数のオブジェクトが間接的な関係の下でふるまい、ビジネスロジックやワークフローがこれら
のオブジェクトの間のインタラクションや協調について指示するという場合にメディエーターは最
も適しています。
この良い例として考えられるのがウィザードのインタフェース(先ほどの
orgChart
の例を参照)
です。ここではウィザードのワークフローを実現するために複数のビューが使われています。これ
らのビューが相互を直接参照するということは、密結合の関係を生んでしまうため避けるべきで
す。メディエーターを取り入れ、それぞれのビューを分離して相互間のワークフローを明確にモデ
ル化しましょう。
メディエーターは実装の詳細からワークフローを抜き出し、高いレベルでより自然な抽象化を提
供します。これによって、ワークフローの内容についての理解が促進されます。ワークフロー内の
それぞれのビューの詳細に踏み込まなくても、ワークフローの中で何が行われているか明確に理解
できます。
7.10.7
両者の組み合わせ
イベントアグリゲーターとメディエーターを組み合わせて利用してみれば、 ...