PHP單例模式 三私一公

2021-09-11 02:40:50 字數 1160 閱讀 8850

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單例模式之「三私一公」

單例模式的概念 單例模式是指整個應用中某個類只有乙個物件例項的設計模式。具體來說,作為物件的建立方式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統全域性的提供這個例項。它不會建立例項副本,而是會向單例類內部儲存的例項返回乙個引用。單例模式的特點 單例模式的主要特點是 三私一公 需要乙...