PHP 设计模式 - 结构型 - 注册模式(Registry)

2021-01-19  本文已影响0人  SylviaYuan95

1. 模式定义

注册模式(Registry)也叫做注册树模式,注册器模式。注册模式为应用中经常使用的对象创建一个中央存储器来存放这些对象 —— 通常通过一个只包含静态方法的抽象类来实现(或者通过单例模式)。

2. UML类图

image.png

3. 示例代码

Registry.php

<?php

namespace DesignPattern\Structural\Registry;

abstract class Registry
{
    const LOGGER = 'logger';

    protected static $storedValues = array();

    public static function set($key, $value)
    {
        self::$storedValues[$key] = $value;
    }

    public static function get($key)
    {
        return self::$storedValues[$key];
    }
    // 通常会有一些方法来检查密钥是否已经注册,等等。 ...
}

单元测试 RegistryTest

<?php

namespace DesignPattern\Tests;

use DesignPattern\Structural\Registry\Registry;
use PHPUnit\Framework\TestCase;

class RegistryTest extends TestCase
{

    public function testSetAndGetLogger()
    {
        Registry::set(Registry::LOGGER, new \StdClass());

        $logger = Registry::get(Registry::LOGGER);
        $this->assertInstanceOf('StdClass', $logger);
    }
}

参考文档:https://laravelacademy.org/post/2850
教程源码:https://github.com/SylviaYuan1995/DesignPatternDemo

上一篇 下一篇

猜你喜欢

热点阅读