设计模式--注册器模式

2021-05-02

使用一个注册类将其他类保存到注册类中,然后使用时根据保存的健名去获取相应的对象
解决全局对象和交换对象
已经创建好的对象,挂载到某个全局可以使用的数组上,在需要使用的时候,直接从该数组上获取即可
将对象注册到全局的树上,任何地方都直接去访问

<?php

class Register
{
	private $_instance = array();
	
	public static function setInstance($object, $alias = null)
	{
		$alias = $alias ?: get_class($object);
		$this->_instance[$alias] = $object;
	}

	public static function getInstance($name)
	{
		return $this->_instance[$name];
	}

	public function unsetInstance($name)
	{
		unset($this->_instance[$name]);
	}
}

$object = new class {
	public function index()
	{
		echo __CLASS__.__METHOD__;
	}
}
$object->index();
Register::setInstance($object, 'classes');
$object1 = Register::getInstance('classes');
$object1->index();

 

{/if}