PHP设计模式之注册树模式

注册树模式

在实例化对象的同时,将该对象注册到注册树中,之后不需要再重复实例化该对象,直接从注册树中取出即可。

RegisterTree.php(注册树类)

<?php
namespace core;

class RegisterTree
{
    protected static $objects;  // 存放注册对象
    // 注册
    public static function set($alias, $object)
    {
        self::$objects[$alias] = $object;
    }
    // 取实例化对象
    public static function get($alias)
    {
        return self::$objects[$alias];
    }
    // 取消注册
    public static function _unset($alias)
    {
        unset(self::$objects[$alias]);
    }
}

Factory.php(工厂类)

<?php
namespace core;

class Factory
{
    // 实例化Test类
    static function createTest()
    {
        $test = Test::getInstance();
        RegisterTree::set('test1', $test);  // 将对象注册到注册树中
        return $test;
    }
}

调用

core\Factory::createTest();                 // 调用工厂方法实例化,并注册到注册树中
$test = \core\RegisterTree::get('test1');   // 直接取实例化对象
$test->test1();

猜你喜欢

转载自blog.csdn.net/qq_36045946/article/details/80993709