PHP7でデザインパターン入門16/23 Mediatorパターン

Mediator パターンとは

Mediator パターンを用いると、オブジェクト間の通信は mediator によってカプセル化され、オブジェクト同士で直接通信せず、mediator を介して行うようになる。

Mediator パターン - Wikipedia

mediatorとは、「調停者」「仲介者」という意味。グループにおける「相談役」のようなイメージ。メンバーは出来事を相談役へ報告し、相談役はその報告をもとに判断を下し、各メンバーに指示を出す。mediatorパターンとは以上のようなデザインパターンである。

example

相談者が相談を引き受け、それを元に判断しColleagueへ指示を出すプログラムを考える。以下サンプルコード。

github.com

実行結果

$ php Main.php
consultation form John
ConcreteColleagueTypeB: consulation from John
consultation form Sarah
ConcreteColleagueTypeA: consulation from Sarah

役割

Mediator役

Colleague役とやり取りを行う、調整を行うためのインターフェース。 サンプルコードにおけるMediatorインターフェース。

ConcreteMediator役

Mediator役のインターフェースを実装し、実際の調整を行う。 サンプルコードにおけるConcreteMediatorクラス。

Colleague役

Mediator役とやり取りを行うインターフェースを定める。 サンプルコードにおけるColleagueインターフェース。

ConcreteColleague役

Colleague役のインターフェースを実装する。 サンプルコードにおけるConcreteColleagueTypeA, ConcreteColleagueTypeBクラス。

まとめ

Mediatorパターンは、複雑に絡みあうオブジェクト相互の通信をやめ、Mediator役に情報を集中させることによって処理を整理する。

関連パターン

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門