为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第5天 设计模式之注册树模式

标签:
PHP 设计模式

课程名称:大话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();

// 输出:小明

课程收货

通过学习本节课,还了解到了之前学习的单例模式和工厂模式的不足之处,学习到了可以通过一种新的设计模式来弥补已有的设计模式的不足的方法,拓宽了思路,希望在以后的学习中可以不断的学习到新的知识
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消