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

【九月打卡】第4天 设计模式之单例模式

标签:
PHP 设计模式

课程名称:大话PHP设计模式

课程章节:单例模式

课程讲师:Rango

课程内容:

特点

  • 代码运行时某个类只存在一个实例化的对象,多次获取该实例化的对象,也不会进行多次实例化

优点

  • 项目中有些功能封装的类是不需要进行多次实例化的,比如连接数据库的类、请求信息的类;这种功能使用单例模式可以节省性能

需要注意的地方

  • 使用单例模式获取类的实例化对象时不是使用new,而是使用类中的一个获取自身实例化对象的方法来获取,原理见代码

代码

class Db{
  // 静态变量用来存储自身实例化的对象
  static private $instanse;
  // 私有的构造函数,防止外部使用new实例化该类
  private function __construct() {}
  // 私有的clone魔术方法,防止对象被克隆
  private function __clone() {}

  // 外部通过这个方法来获取实例化后的本类
  static public function instanse() {
    if(!self::$instanse) self::$instanse = new self();
    return self::$instanse;
  }

  public function test() {
    echo '调用了Db类的test方法';
  }
}

// 多次调用类的instanse方法获取到也是获取到的相同的对象,可以通过输出中的#1看出来
$a = Db::instanse();
$b = Db::instanse();
var_dump($a);
var_dump($b);

/**
  object(Db)#1 (0) {
  }
  object(Db)#1 (0) {
  }
 */

课程收货

这是学习的第二个设计模式,目前学习的模式都比较简单,且易懂,但内容却没有一点水分,都是干货
图片描述

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消