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

PHPで学ぶデザインパターン - Mediatorパターンについて、設計原則とトレードオフ、実践的な適用方法を詳しく解説します。

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
☕ サポート

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


関連記事