課程
/后端開發(fā)
/PHP
/PHP進(jìn)階篇
單例模式只允許有一個(gè)全局唯一的對(duì)象 ?這句話的意思 ? ?單例模式是什么意思哎
2017-09-10
源自:PHP進(jìn)階篇 2-7
正在回答
只能new 一次就是實(shí)例化一次:你每次需要用這各類都要去實(shí)例化(也就是去new)這樣每次都需要開辟內(nèi)存空間>>>重復(fù)使用這個(gè)類時(shí)就會(huì)占用更多的空間>>>>為了解決內(nèi)存占用 ?>>>>就把構(gòu)造方法給私有化
【??
?private function __construct() { ? ? ? ?echo 'object create'; ? ?}】
這樣在其他類中無法實(shí)例化這個(gè)類(那要怎樣實(shí)例化那)>>>這是就會(huì)用到靜態(tài)公開方法>>>
? ?public static function getInstance() { ? ? ? ?if (empty(self::$_object)) { ? ? ? ? ? ?self::$_object = new Car(); //內(nèi)部方法可以調(diào)用私有方法,因此這里可以創(chuàng)建對(duì)象 ? ? ? ?} ? ? ? ?return self::$_object; ? ?}
public static ?function getInstance()這個(gè)方法能直接被其他類調(diào)用 ?因?yàn)檫@個(gè)方法可以調(diào)用這個(gè)類的內(nèi)部的所有方法 ? 所以這個(gè)方法就是個(gè)中介
不懂可以繼續(xù)追問 ? 要理解單列模式之前一定要把 ?public(公有),protected(受保護(hù))和private(私有之一)的作用域搞懂
慕沐4974640 提問者
其實(shí)就是搞個(gè)靜態(tài)變量?jī)?chǔ)存new出來的對(duì)象,new的時(shí)候在構(gòu)造方法里判斷下如果靜態(tài)變量里有對(duì)象,就是已經(jīng)實(shí)例化過了,就返回這個(gè)對(duì)象,沒有的話就實(shí)例化一個(gè)新的并保存到那個(gè)靜態(tài)變量中,一般這種單態(tài)都是用于像數(shù)據(jù)庫(kù)連接這種只需要實(shí)例化一個(gè)對(duì)象
....
舉報(bào)
輕松學(xué)習(xí)PHP中級(jí)課程,進(jìn)行全面了解,用PHP快速開發(fā)網(wǎng)站程序
7 回答不是不允許實(shí)例化對(duì)象嗎,怎么這里直接實(shí)例化了。
5 回答php類和對(duì)象之創(chuàng)建一個(gè)對(duì)象
2 回答對(duì)象類型不一致
2 回答echo和print_r的區(qū)別?一個(gè)是傳值,一個(gè)是數(shù)組或者對(duì)象嗎
4 回答為什么每次實(shí)體化一個(gè)對(duì)象后面都有一個(gè)(),這個(gè)()出現(xiàn)的頻率好高啊
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-09-11
只能new 一次就是實(shí)例化一次:你每次需要用這各類都要去實(shí)例化(也就是去new)這樣每次都需要開辟內(nèi)存空間>>>重復(fù)使用這個(gè)類時(shí)就會(huì)占用更多的空間>>>>為了解決內(nèi)存占用 ?>>>>就把構(gòu)造方法給私有化
【??
?private function __construct() {
? ? ? ?echo 'object create';
? ?}
】
這樣在其他類中無法實(shí)例化這個(gè)類(那要怎樣實(shí)例化那)>>>這是就會(huì)用到靜態(tài)公開方法>>>
? ?public static function getInstance() {
? ? ? ?if (empty(self::$_object)) {
? ? ? ? ? ?self::$_object = new Car(); //內(nèi)部方法可以調(diào)用私有方法,因此這里可以創(chuàng)建對(duì)象
? ? ? ?}
? ? ? ?return self::$_object;
? ?}
public static ?function getInstance()這個(gè)方法能直接被其他類調(diào)用 ?因?yàn)檫@個(gè)方法可以調(diào)用這個(gè)類的內(nèi)部的所有方法 ? 所以這個(gè)方法就是個(gè)中介
不懂可以繼續(xù)追問 ? 要理解單列模式之前一定要把 ?public(公有),protected(受保護(hù))和private(私有之一)的作用域搞懂
2017-09-11
其實(shí)就是搞個(gè)靜態(tài)變量?jī)?chǔ)存new出來的對(duì)象,new的時(shí)候在構(gòu)造方法里判斷下如果靜態(tài)變量里有對(duì)象,就是已經(jīng)實(shí)例化過了,就返回這個(gè)對(duì)象,沒有的話就實(shí)例化一個(gè)新的并保存到那個(gè)靜態(tài)變量中,一般這種單態(tài)都是用于像數(shù)據(jù)庫(kù)連接這種只需要實(shí)例化一個(gè)對(duì)象
2017-09-10
....