單例模式:即乙個類只被例項化一次,當其他人對其再次例項化時,便返回第一次例項化的物件。這種模式可以極大地節約資源。典型應用於資料庫類的例項化。
以例項化乙個mysql資料庫類為例:
要實現乙個類只例項化一次,就必須堵住其他例項化的入口。
1.例項化類時,會自動呼叫類的構造方法,因為將構造方法設定為private屬性,限制為只能在類內部例項化
private function __construct()
2.定義乙個靜態方法,在類內部例項化物件。例項化前先判斷該類是否已被例項化了,若已被例項化,就返回該例項化物件;若沒被例項化,便例項化乙個物件並將該物件儲存在類的靜態屬性中
private static $self = null;public static function create()
return self::$self;
}
3.禁止轉殖,物件之間進行轉殖可生成不同的物件。而轉殖時會自動呼叫類的__conle方法,因此將轉殖方法設定為private屬性
private function __clone()
綜上,三私一公(三個私有屬性和乙個公共方法)單例模式的**如下:
class mysqlreturn self::$self;
} private function __construct()
private function __clone()
}$a = mysql::create();
$b = mysql::create();
/*判斷兩個類是否為同乙個類*/
echo $a===$b ? 1 : 0;
PHP單例模式 典型的三私一公
單例模式 即乙個類只被例項化一次,當其他人對其再次例項化時,便返回第一次例項化的物件。這種模式可以極大地節約資源。典型應用於資料庫類的例項化。以例項化乙個mysql資料庫類為例 要實現乙個類只例項化一次,就必須堵住其他例項化的入口。1.例項化類時,會自動呼叫類的構造方法,因為將構造方法設定為priv...
PHP單例模式 三私一公
注意 1.外部不可以例項化,因此內部例項化函式的型別必須為靜態,在類未例項化之前就已經初始化 2.靜態函式只能訪問靜態變數,所以定義private static instance 3.靜態變數的訪問寫法為 類名 變數名,在類內部可以直接寫self instance 4.可以用instanceof這個...
PHP單例模式 三私一公
php設計模式之一,單例模式,顧名思義就是只有乙個例項。單例模式確保某乙個類只有乙個例項,不能重複例項,只能它自己例項化,而且向整個系統提供這個例項。三私一公 私有化靜態屬性,私有化構造方法,私有化轉殖方法,公有化靜態方法。單例模式 即乙個類只被例項化一次,當其他人對其再次例項化時,返回第一次例項化...