04 06 2020

注册树模式

模式定义

注册树模式又称注册模式或注册器模式。注册树模式通过将对象实例注册到一棵全局的对象树上,需要的时候从对象树上采摘的模式设计方法。和果树不同的是,果子只能采摘一次,而注册树上的实例却可以无数次获取。


注册树模式的优势

使用了注册树模式后,对于实例,我们能够更好地统筹管理安排,就像使用全局变量一样的方便实用。  


代码示例

Register\Register.class.php
<?php
namespace Register;

class Register
{
    public static $objects;

    public static function set($alias, $onject)
    {
        self::$objects[$alias] = $onject;
    }

    public static function get($alias)
    {
        if(isset(self::$objects[$alias])){
            return self::$objects[$alias];
        }else{
            echo '对象不存在';
        }
    }

    public static function _unset($alias)
    {
        unset(self::$objects[$alias]);
    }
}


Register\Test.class.php
<?php
namespace Register;

class Test
{
    public function run()
    {
        echo "test register";
    }
}


Register\RegisterTest.php
<?php
spl_autoload_register(function ($className){
    $className = str_replace("\\", "/", $className);
    include $className.".class.php";
});

use Register\Test;
use Register\Register;

$test = new Test();
Register::set('t', $test);
Register::get('t')->run();


测试示例:

php Register/RegisterTest.php 
输出:
test register




代码地址:https://github.com/798256478/design-patterns/tree/master/Register