注册树模式

注册树模式

  1. 顾名思义,是将对象挂载到一个对象书上
  2. 需要使用某个对象时,从对象树上加载该对象即可
  3. 因此,对象树一定是全局的

代码demo

/**
 * Class Tree
 * @package 注册树模式
 */
class Tree
{
    /*树枝*/
    protected static $objects = null;

    /*将对象挂载到树干上*/
    public static function set($key,$object)
    {
        self::$objects[$key] = $object;
    }

    /*从树干上获取对象*/
    public static function get($key)
    {
        if (!isset(self::$objects[$key])) {
            //self::set($key,$className);
            self::$objects[$key] = new $key;
        }
        return self::$objects[$key];

    }

    /*删除对象*/
    public static function _unset($className) {
        unset(self::$objects[$className]);
    }

}

使用方法

$test = new Test;
Tree::set('test',$test);
//Tree::set('b',B); 如果有其他类
//Tree::set('a',A); 如果有其他类

dump(Tree::get("test")->getData());
//dump(Tree::get("a")->getData());
//dump(Tree::get("b")->getData());

测试的Test类

class Test
{
    public function getData()
    {
        return '我是test类 获取到了';
    }

}

运行截图

屏幕截图 2020-10-19 222043.png

添加新评论