- A+
<?php /** * 单例模式 */ 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)