/**
* 单例模式
*/
class Site
{
//属性
public $siteName;
//本类的静态实例
public static $instance = null;
//禁用掉构造器
private function __construct($siteName)
{
$this->siteName = $siteName;
}
//获取本类唯一实例
public static function getInstance($siteNme = '默认siteName值')
{
//判断实例是不是自己的一个实例
if(!self::$instance instanceof self){
self::$instance = new self($siteNme);
}
return self::$instance;
}
}
/**
* 工厂模式
* 生成本类的单一实例
* Class Factory
*/
class Factory
{
public static function create($patternName)
{
return Site::getInstance($patternName);
}
}
/**
* 对象注册树
* 注册:set(); 把对象挂到书上
* 获取:get(); 把对象从树上获取下来
* 注销:_unset(); 把对象销毁
* Class Register
*/
class Register
{
//创建对象数组
protected static $object = [];
//传参 $alias 别名 $object 真正的对象
//生成对象并挂到树上
public static function set($alias,$object)
{
self::$object[$alias] = $object;
}
// 把对象从树上获取下来
public static function get($alias)
{
return self::$object[$alias];
}
// 把对象销毁
public static function _unset($alias)
{
unset(self::$object[$alias]);
}
}
Register::set('zhangObj',Factory::create('实例个鸡儿1'));
$obj = Register::get('zhangObj');
var_dump($obj);
运行结果:
object(Site)[1]
public 'siteName' => string '实例个鸡儿1' (length=16)