アプリケーション 2019-01-31 ⏱ 約 2 分

PHPで学ぶデザインパターン - Mediatorパターン

「PHPで学ぶデザインパターン Advent Calendar 2018」の記事の1つで、Mediatorパターンを取り上げます。複雑になりがちなオブジェクト同士のやり取りを仲介役(Mediator)に集約し、オブジェクト間の関係の見通しを良くするこのパターンの仕組みと、PHPでの実装方法を解説します。

Read in: en
PHPで学ぶデザインパターン - Mediatorパターン

概要

PHPで学ぶデザインパターン Advent Calendar 2018で間に合わなかった記事。

Mediatorパターンとは

仲介者・調停者の意味。

オブジェクトの振る舞いに関するデザインパターンで、オブジェクト間のやりとり調整するためのパターン。

オブジェクト同士のやり取りが複雑化し、関係性が見えにくくなるような時に有用かもしれない。

実装

<?php

// Mediator
class Receptionist
{
    public function checkIn(User $user, $message) // 振る舞いの操作を任せたいオブジェクトを保持
    {
        echo $message . ' ' . $user->getName();
    }
}

class User
{
    private $name;
    private $receptionist;

    public function __construct($name, Receptionist $receptionist) // Mediatorを持つ
    {
        $this->name = $name;
        $this->receptionist = $receptionist;
    }

    public function getName()
    {
        return $this->name;
    }

    public function checkIn($message)
    {
        $this->receptionist->checkIn($this, $message); // $this!!
    }
}

$receptionist = new Receptionist();


$john = new User('John', $receptionist);
$bob = new User('Bob', $receptionist);

$john->checkIn('Welcome!'); // Welcome! John
$bob->checkIn('Hi!'); // Hi! Bob

所感

クラス間のやりとりが複雑化しそうなときにオブジェクトの振る舞いをまとめて管理したいときに思い出したいパターン。

参考

Tags: PHP デザインパターン GoF
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事