课程名称:大话PHP设计模式
课程章节:注册树模式
课程讲师:Rango
课程内容:
可以这么理解注册树模式
- 注册树模式通过将对象实例作为果实挂到一颗全局的大树上,使用时就从树上摘下来,只不过摘下来之后树上的这颗果实并不会消失
为什么要使用注册树模式
- 我们在项目中会实例化很多类,会产生很多对象,这么多的对象就像散兵一样,不方便统筹管理,注册树模式可以解决这个问题
实现注册树模式
- 建立一个注册树的类,定义一个静态键值数组变量
- 新建一个
get(别名)
方法,用来获取对象 - 新建一个
set(别名, 对象)
方法,用来把对象写入到静态变量中,别名作为数组的键 - 新建一个
unset(别名)
方法,用来把对象从静态变量中删除 - 具体实现看代码
class Register{
static $trees = [];
static public function get($alias) {
return self::$trees[$alias];
}
static public function set($alias, $object) {
self::$trees[$alias] = $object;
}
static public function unset($alias) {
unset(self::$trees[$alias]);
}
}
class User{
public function getName() {
return '小明';
}
}
// 可以在项目初始化的时候实例化User类,并插入到树上
$user = new User;
Register::set('user', $user);
// 在项目其它地方使用时,使用注册树类的get方法来获取对象
$user = Register::get('user');
echo $user->getName();
// 输出:小明
课程收货
通过学习本节课,还了解到了之前学习的单例模式和工厂模式的不足之处,学习到了可以通过一种新的设计模式来弥补已有的设计模式的不足的方法,拓宽了思路,希望在以后的学习中可以不断的学习到新的知识