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

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

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

课程名称:大话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) {
  }
 */

课程收货

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

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