亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁(yè) php教程 php手冊(cè) 單例模式 俗稱單例3步曲+1曲

單例模式 俗稱單例3步曲+1曲

Oct 15, 2016 am 10:31 AM

什麼是單例模式?
??? 在整個(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)


?>
?

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門(mén)話題

Laravel 教程
1597
29
PHP教程
1488
72