一个对象,可能很多地方需要用到;每用到一次,就new一次,浪费资源。通过注册器模式,初始化的时候注册对象,往后就可以直接获取注册器中的对象,而不用再new。 1. 注册器类
/*
*注册树模式
**/
class Register{
protected static $objects;//对象数组
/*
* 注册对象
* */
static function _set($name,$object){
self::$objects[$name] = $object;
}
/*
* 获取对象
* */
static function _get($name){
return self::$objects[$name];
}
/*
* 删除对象
* */
static function _unset($name){
unset(self::$objects[$name]);
}
}
2. 注册databases对象的方法
/*
*工厂模式
**/
class Factory{
static function createDatabases(){
$db = Databases::getDatabases();
Register::_set('databases',$db);//注册databases对象
}
}
3. 注册databases对象
\Factory::createDatabases();
4. 通过注册器,获取databases对象
\Register::_get('databases');
初始化时,调用“\Factroy::createDatabase()”,注册databases对象; 然后就可以在任何地方通过直接“\Register::get('databases')”,获取databases对象;
也就是初始化时只需调用一次“\Factroy::createDatabase()”,往后不用再调用“\Factroy::createDatabase()”方法了,直接“IMooc\Register::get('databases')”获取;