單例模式
1、定義:
單例(Singleton)模式的定義:指一個類只有一個實體,且該類能自行創建這個實體的一種模式,
2、特點:
- 單例類只有一個實體物件;
- 該單例物件必須由單例類自行創建;
- 單例類對外提供一個訪問該單例的全域訪問點;
3、應用場景
- 在應用場景中,某類只要求生成一個物件的時候,如一個班中的班長、每個人的身份證號等,
- 當物件需要被共享的場合,由于單例模式只允許創建一個物件,共享該物件可以節省記憶體,并加快物件訪問速度,如 Web 中的配置物件、資料庫的連接池等,
- 當某類需要頻繁實體化,而創建的物件又頻繁被銷毀的時候,如多執行緒的執行緒池、網路連接池等,
4、PHP 單例模式的實作:
單例模式是設計模式中最簡單的模式之一,通常,普通類的建構式是公有的,外部類可以通過“new 建構式()”來生成多個實體,
但是,如果將類的建構式設為私有的,外部類就無法呼叫該建構式,也就無法生成多個實體,這時該類自身必須定義一個靜態私有實體,并向外提供一個靜態的公有函式用于創建或獲取該靜態私有實體,
簡單記作:三私一公:
-
- 私有的構造方法:外部無法呼叫,也就無法生成多個實體
- 私有的克隆方法:防止克隆
- 私有的靜態屬性:存盤唯一實體化的物件
- 公有的靜態方法:實體化該類本身
代碼:
<?php class Single{ //私有的靜態屬性 private static $_instance=null; //私有的構造方法 private function __construct(){ echo 'Single Mode'; } //私有的克隆方法 private function __clone(){} //公有的靜態方法 //實體化前先判斷該類是否已被實體化了,若已被實體化,就回傳該實體化物件;若沒被實體化,便實體化一個物件并將該物件保存在類的靜態屬性中 public static function getInstance(){ if(self::$_instance===null){ self::$_instance = new self(); } return self::$_instance; } } $test = Single::getInstance(); var_dump($test); ?>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71685.html
標籤:PHP
