首頁 >後端開發 >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