继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

潮流宣乐生
关注TA
已关注
手记 55
粉丝 0
获赞 0

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

// 输出:小明

课程收货

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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP