亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消