php設計模式之一,單例模式,顧名思義就是只有乙個例項。單例模式確保某乙個類只有乙個例項,不能重複例項,只能它自己例項化,而且向整個系統提供這個例項。
三私一公:私有化靜態屬性,私有化構造方法,私有化轉殖方法,公有化靜態方法。
單例模式:即乙個類只被例項化一次,當其他人對其再次例項化時,返回第一次例項化的物件,可以避免大量的new 操作,減少資源的消耗,典型應用於資料庫類的例項化。
以例項化乙個mysql資料庫類為例:
要實現乙個類只例項化一次,就必須堵住其他例項化的入口。
1.例項化類時,會自動呼叫類的構造方法,因為將構造方法設定為private屬性,限制為只能在類內部例項化
//私有構造方法,防止在類的外部例項化
private function __construct()
2.定義乙個靜態方法,在類內部例項化物件。例項化前先判斷該類是否已被例項化了,若已被例項化,就返回該例項化物件;若沒被例項化,便例項化乙個物件並將該物件儲存在類的靜態屬性中
//私有靜態屬性,存放該類的例項
private static $instance = null;
//公共的靜態方法,例項化該類本身,只例項化一次
public static function getinstance()
return self::$instance;
}
3.禁止轉殖,物件之間進行轉殖可生成不同的物件。而轉殖時會自動呼叫類的__conle方法,因此將轉殖方法設定為private屬性
//私有轉殖方法,防止轉殖
private function __clone()
綜上,三私一公(三個私有屬性和乙個公共方法)單例模式的**如下:
class db
private function __clone() //私有轉殖方法,防止轉殖
public static function getinstance() //公共的靜態方法,例項化該類本身,只例項化一次
return self::$instance;
}}
php 中最全的設計模式
php命名空間 namespace
PHP單例模式 三私一公
注意 1.外部不可以例項化,因此內部例項化函式的型別必須為靜態,在類未例項化之前就已經初始化 2.靜態函式只能訪問靜態變數,所以定義private static instance 3.靜態變數的訪問寫法為 類名 變數名,在類內部可以直接寫self instance 4.可以用instanceof這個...
PHP單例模式 三私一公
單例模式是指整個應用中某個類只有乙個物件例項的設計模式。具體來說,作為物件的建立方式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統全域性的提供這個例項。它不會建立例項副本,而是會向單例類內部儲存的例項返回乙個引用。單例模式的主要特點是 三私一公 1 需要乙個儲存類的唯一例項的私有靜態...
php單例模式之「三私一公」
單例模式的概念 單例模式是指整個應用中某個類只有乙個物件例項的設計模式。具體來說,作為物件的建立方式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統全域性的提供這個例項。它不會建立例項副本,而是會向單例類內部儲存的例項返回乙個引用。單例模式的特點 單例模式的主要特點是 三私一公 需要乙...