學習設計模式最難的事情就是理解什麼樣的設計模式適用於什麼樣的場景。
單例模式是一種建立型模式,它會限制應用程式,使其只能建立某以特定類型別的乙個單一的例項。
1.我們可以在類中使用乙個靜態屬性,來保證對於乙個特定的類來說只存在乙個單一的例項。
classpayment
2.接下來,我們需要在類中建立乙個靜態方法,在類的例項不存在的時候,此方法將會建立乙個這個類的例項,並且返回這個例項。
staticfunction
getinstance()
return self::$_instance
;}
通常情況下,單例模式中的這個方法的名字命名為getinstance(),在這個方法中,會有乙個條件語句用於檢查$_inistance屬性是否是乙個null值。如果是,將會使用new關鍵字例項化自身,並賦值給這個屬性,否則直接返回這個屬性。
3.現在這個類可以按照這個方法使用:
$pay = payment::getinstance();
如果乙個使用者試圖使用 new 或 clone 去建立這個類的新物件,那麼就會得到多個例項,這樣就破壞了單例模式的限制。
防止這種情況發生的乙個技巧就是建立乙個私有的建構函式:
privatefunction
__construct(){}
private
function __clone(){}
此時,使用者嘗試使用new去例項化這個類,程式就會產生乙個錯誤。
單例模式是在一些限制必須使用單一例項的場景中。例如,乙個公司有且只有乙個財務中心,公司的所有資金流入流出、財務制度等都由這個財務中心來管理。
PHP設計模式之單例模式
1 單例模式概念 單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方案。2 uml靜態模型 3 單...
PHP設計模式之 單例模式
class danli 建立 clone方法防止物件被複製轉殖 public function clone 單例方法,用於訪問例項的公共的靜態方法 public static function getinstance return self instance public function test...
PHP設計模式之 單例模式
單例模式 職責模式 簡單的說,乙個物件 在學習設計模式之前,需要比較了解物件導向思想 只負責乙個特定的任務 單例類 1 建構函式需要標記為 private 訪問控制 防止外部 使用 new操作符建立物件 單例類不能在其他類中例項化,只能被其自身例項化 2 擁有乙個儲存類的例項的靜態成員變數 3 擁有...