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