>백엔드 개발 >PHP 튜토리얼 >PHP 设计模式系列 -- 注册模式(Registry)

PHP 设计模式系列 -- 注册模式(Registry)

WBOY
WBOY원래의
2016-06-23 13:20:151291검색

1、模式定义

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

2、UML类图

3、示例代码

Registry.php

<?phpnamespace DesignPatterns\Structural\Registry;/** * class Registry */abstract class Registry{    const LOGGER = 'logger';    /**     * @var array     */    protected static $storedValues = array();    /**     * sets a value     *     * @param string $key     * @param mixed  $value     *     * @static     * @return void     */    public static function set($key, $value)    {        self::$storedValues[$key] = $value;    }    /**     * gets a value from the registry     *     * @param string $key     *     * @static     * @return mixed     */    public static function get($key)    {        return self::$storedValues[$key];    }    // typically there would be methods to check if a key has already been registered and so on ...}

4、测试代码

Tests/RegistryTest.php

<?phpnamespace DesignPatterns\Structural\Registry\Tests;use DesignPatterns\Structural\Registry\Registry;class RegistryTest extends \PHPUnit_Framework_TestCase{    public function testSetAndGetLogger()    {        Registry::set(Registry::LOGGER, new \StdClass());        $logger = Registry::get(Registry::LOGGER);        $this->assertInstanceOf('StdClass', $logger);    }}
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.