PHP單例模式

2021-06-17 20:51:52 字數 1025 閱讀 3912

模式對於oop開發人員尤其有用,因為他有助於建立穩定的api,並且仍然保持一定的靈活度。一種模式可以幫助我們定義負責完成特定任務的物件,還可以允許我們全部修改掉某個類而不用修改與這些類打交道的**。前者被稱為類的職責,後者被稱為類的多型性。

單例模式被當作職責模式,他用來在應用程式中建立乙個單一的功能訪問點。它將建立物件的控制權委託到乙個單一的訪問點上。在任何時候,應用程式中都 只會有這個類僅有的乙個例項存在。這可以防止我們去開啟資料庫的多個連線或者不必要得使用多餘的系統資源。在更加複雜的系統中,使用單例模式在維持應用程 序狀態的同步方面也尤其有用。

所有的單例類至少擁有以下三種公共元素:

它們必須擁有乙個建構函式,並且必須被標記為private。

它們擁有乙個儲存類的例項的靜態成員變數。

它們擁有乙個訪問這個例項的公共的靜態方法。

和普通類不同的是,單例類不能在其他類中直接例項化。單例類只能被其自身例項化。要獲得這樣的一種結果, __construct()方法必須被標記為private。如果試圖用private建構函式構造乙個類,就會得到乙個可訪問性級別的錯誤。

要讓單例類起作用,就必須使其為其他類提供乙個例項,用它呼叫各種方法。單例類不會建立例項副本,而是會向單例類內部儲存的例項返回乙個引用。結果 是單例類不會重複占用記憶體和系統資源,從而讓應用程式的其它部分更好地使用這些資源。作為這一模式的一部分,必須建立乙個空的私有__clone()方 法,以防止物件被複製或轉殖。

返回例項引用的這個方法通常被命名為gettnstance()。這個方法必須是靜態的,而且如果它還沒有例項化,就必須進行例項化。getinstance() 方法通過使用 instanceof 操作符和self 關鍵字,可以檢測到類是否已經被例項化。

class database

private __clone() {};

public static function getinstance()

return self::$_instance;

} public function query($sql)

}

php單例模式

單例模式 單例類 1 建構函式需要標記為private 訪問控制 防止外部 使用new操作符建立物件 單例類不能在其他類中例項化,只能被其自身例項化 2 擁有乙個儲存類的例項的靜態成員變數 3 擁有乙個訪問這個例項的公共的靜態方法 常用getinstance 方法進行例項化單例類,通過instanc...

php 單例模式

單例模式 身份證號碼 單例類identitycardno 身份證號碼類 class identitycardno public function getinstance else return self instance private function setidentitycardno no p...

php單例模式

乙個物件 在學習設計模式之前,需要比較了解物件導向思想 只負責乙個特定的任務 單例類 1 建構函式需要標記為private 訪問控制 防止外部 使用new操作符建立物件 單例類不能在其他類中例項化,只能被其自身例項化 2 擁有乙個儲存類的例項的靜態成員變數 3 擁有乙個訪問這個例項的公共的靜態方法 ...