PHP设计模式之注册树模式
2018/09/06 15:04 分类: 技术交流 浏览:40
- 什么是注册树模式
注册树模式也叫注册模式或注册器模式,顾名思义,注册树就是把对象实例注册到一棵全局的对象树上,需要对象的时候时候就从树上取下来,就好比树上涨的果子,需要的时候就摘一个下来,只是这个对象树果子是摘不完的。
- 为什么要使用注册注册树模式
不管你们前面用单例还是工厂建立的对象,都是一个个游兵散将,没有得到很好的管理,那如果用了注册树模式,就可以把创建出来的对象注册到全局树上,需要的时候取下来用,可以很好的管理创建的对象。
- 注册树模式实现
<?php
//单例模式
class Person
{
public $name;//姓名
public $age;//年龄
//>>3. 声明 一个私有的静态属性用来存储第2步创建的对象
private static $obj = null;
//>>1. 私有化构造方法
private function __construct($name, $age)
{
//初始化属性
$this->name=$name;
$this->age=$age;
}
//>>2. 提供一个公共的静态方法用来创建实例
public static function CreateObject($name, $age)
{
if (!isset(self::$obj)) {
//创建对象赋值给静态属性$obj
self::$obj = new Person($name, $age);
}
return self::$obj;
}
//>>4. 私有化克隆方法
private function __clone()
{
}
}
//工厂模式
class PersonFactory{
public static function factory($name,$age){
return Person::CreateObject($name,$age);
}
}
//注册树模式
class Register{
protected static $objects;
public static function set($alias,$object){
self::$objects[$alias]=$object;
}
public static function get($alias){
return self::$objects[$alias];
}
public static function _unset($alias){
unset(self::$objects[$alias]);
}
}
Register::set('person',PersonFactory::factory('itsource',18));
$object=Register::get('person');
var_dump($object);
- 结果
赞 0