【メディエーターパターン】

Mediatorパターン とは?

💡 チャットサーバーのように、全員の会話をひとりが仕切る
📌 このページのポイント
Mediatorパターン:仲介者を通じた通信 Mediator (仲介者) クラスA クラスB クラスC クラスD 直接通信は行わない 全クラスはMediatorのみと通信する
Mediatorパターン:仲介者を中心に疎結合を実現
ひよこ ひよこ

クラスがたくさんあると、お互いに直接連絡し合って大変なことになりそうだね!

ペンギン先生 ペンギン先生

そうだね。クラスA→B、B→C、C→Aみたいに直接つながると、変更したとき全部修正が必要になって大変だよ。そこで登場するのがMediatorパターンだよ。

ひよこ ひよこ

Mediatorって何をするの?

ペンギン先生 ペンギン先生

全員の通信窓口になる「仲介者クラス」を1つ作るんだ。チャットアプリでいうと、ユーザー同士が直接メッセージを送り合うんじゃなく、全部チャットサーバーを経由するイメージだよ。

ひよこ ひよこ

なるほど!そうすると各クラスはMediatorとだけ話せばいいんだね!

ペンギン先生 ペンギン先生

その通り!クラスが増えても仲介者に1つ追加するだけで済むから、全体の依存関係がすっきりするんだ。GUIのフォームボタンやテキストフィールドを連携させるときによく使われるよ。

ひよこ ひよこ

デメリットはないの?

ペンギン先生 ペンギン先生

Mediatorクラスに全ロジックが集まりすぎて、巨大になってしまう「God Object」問題が起きやすいよ。責任を適切に分割することが大事だね。

ひよこ ひよこ

仲介者が頑張りすぎないようにするのが大事なんだね!

ペンギン先生 ペンギン先生

そう!Observerパターンと組み合わせて通知を分散させるのも定番テクニックだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Mediatorパターン」って出てきたら「仲介者を通じてオブジェクトを疎結合にする設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Mediator Pattern」 = 仲介者パターン
💬 Mediatorは「仲裁者・調停者」という意味で、外交交渉を仲介する人をイメージするとわかりやすいだよ
← 用語集にもどる