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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容