一、單例模式是什麼?有什麼作用?
單例模式就是讓類 只實例化(new)一次,使用單例模式, 則可以避免大量的new 操作消耗的資源。
二、實現單例模式
1)三私一公(原理)
①、私有靜態屬性,又來儲存生成的唯一對象
②、私有構造函數
③、私有克隆函數,防止克隆——clone
④、公共靜態方法,用來訪問靜態屬性儲存的對象,如果沒有對象,則生成此單例
2)關鍵詞instanceof,檢查此變量是否爲該類的對象、子類、或是實現接口。
class SingleInstance{
private function _construct(){
// 私有構造函數
}
private static $instance; // 私有屬性,存儲類對象
private function _clone(){ // 私有克隆函數,防止clone
}
public static function getInstance(){ // 公有獲取 實例化對象方法
if(!self::$instance instanceof SingleInstance){
self::$instance=new SingleInstance();
}
return self ::$instance;
}
}
三、應用場景(請求次數較多的類)
1、數據庫類
2、網站計數器
3、應用程序的日誌應用
4、Web應用的配置對象的讀取