什麼是單例模式?
??? 在整個(gè)應(yīng)用中透過(guò)這個(gè)類別只能實(shí)例化一個(gè)物件實(shí)例的設(shè)計(jì)模式
?
模式分類?
在所有模式設(shè)計(jì)中,有三種基礎(chǔ)設(shè)計(jì)模式,單例模式,工廠模式,註冊(cè)樹(shù)模式,其他模式往往基於這幾種模式,今天帶來(lái)的是單例模式。
為什麼要用單例模式?
??? 1。 php常常和資料庫(kù)打交道,如果在應(yīng)用程式中經(jīng)常建立連接對(duì)象,進(jìn)行new操作的話,會(huì)消耗大量的系統(tǒng)記憶體資源。 (節(jié)省資源開(kāi)銷)
??? 2。在團(tuán)隊(duì)合作專案中,單例模式可以有效避免不同程式設(shè)計(jì)師new自己的物件時(shí),造成人為的系統(tǒng)消耗。 (節(jié)省資源開(kāi)銷)
?------------------實(shí)現(xiàn)單例3部曲+1曲------------------
第一步:封裝構(gòu)造方法? private? __construct( ) { }
???????????? 原因:????????方法創(chuàng)建實(shí)例物件了。
?
第二步:?? 透過(guò)類別內(nèi)的方法建立物件實(shí)例。?? static Single(){ }
?????????? 原因:我們傾向於傾向於建立了物件後才呼叫物件的方法,而此時(shí)需要呼叫裡面的方法來(lái)建立物件。不受是否創(chuàng)造物件影響都能呼叫的方法的解決方案毋庸置疑那就是利用關(guān)鍵字--static
????????????????? ?
?第三步:定義一個(gè)封裝的靜態(tài)變數(shù)??? private static $instance
??????????
第四步(加1曲):私有化克隆的魔術(shù)方法:__c l o n e ();
??????????? 原因:對(duì)於一個(gè)類別的對(duì)象,如果使用“clone運(yùn)算符”,就會(huì)克隆出一個(gè)跟當(dāng)前對(duì)象完全一樣的新對(duì)像出來(lái),並且:此時(shí)這個(gè)對(duì)象新物件也會(huì)自動(dòng)呼叫該類別中的魔術(shù)方法:_ _c l o n e ();只要其中有該方法;
程式碼示範(fàn)
<?php class Sing { //第三步:定義一個(gè)變量 private static $instance= null; //第一步:封裝構(gòu)造函數(shù) private function __construct(){ } //第二步:使用類名調(diào)用這個(gè)類創(chuàng)建對(duì)象實(shí)例 static function getSingle(){ if( !(self::$instance instanceof self) ){ //instanceof判斷一個(gè)對(duì)象是否是某個(gè)類的實(shí)例 self::$instance = new self(); //用變量來(lái)存儲(chǔ)實(shí)例化出來(lái)的對(duì)象 } return self::$instance; } //第四步:禁止克隆實(shí)例化出來(lái)的對(duì)象 private function __clone(){ } } $danli = Sing::getSingle(); var_dump($danli); //輸出 object(Sing)#1 (0) { } $danli2 = Sing::getSingle(); var_dump($danli2); //輸出 object(Sing)#1 (0) { } $obj3 = clone $danli; //此處禁止克隆單例對(duì)象實(shí)例 var_dump($obj3); //Call to private Sing::__clone() from context '' in 錯(cuò)誤行號(hào) ?>?

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)