一個對象,可能很多地方需要用到;每用到一次,就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');
~~~
* * * * *
> [success]初始化時,調用“\Factroy::createDatabase()”,注冊databases對象; 然后就可以在任何地方通過直接“\Register::get('databases')”,獲取databases對象;
* * * * *
> [success]也就是初始化時只需調用一次“\Factroy::createDatabase()”,往后不用再調用“\Factroy::createDatabase()”方法了,直接“IMooc\Register::get('databases')”獲取;