以下為單例模式**:
複製** **如下:
phpclass easyframework_easy_mysql
public static function getinstance()
return self::$_instance;
}protected function __clone()
}$x = easyframework_easy_mysql::getinstance();
var_dump($x);
?>
/* * 1.第一步:
* 既然是單例,也就是只能例項化一次,也就代表在例項化時
* 不可能使用new關鍵字!!!!
* 在使用new關鍵字時,類中的建構函式將自動呼叫。
* 但是,如果我們將建構函式的訪問控制符設定為prowww.cppcns.comtected或private
* 那麼就不可能直接使用new關鍵字了!!!
* 第二步:
* 無論protected/private修飾的屬性或方法,請問在當前類的
* 內部是否可以訪問?---> 可以
* 第三步:
* 現在我們根本沒有辦法得到物件(因為你不能使用new關鍵字了),
* 第四步:靜態成員(包括屬性或方法)在訪問時,只能通過
* 類名稱::屬性()
* 類名稱::方法()
* 第五步:如果我現在存在乙個靜態方法--> getinstance()
* 那麼在呼叫時就應寫成
* $object = easyframework_easy_mysql::getiokwqfshmkanstance()
* 如果,getinstance()方法可以得到唯一的乙個物件
* 也就代表是所謂的單例模式了!!!
* 第六步,怎麼讓getinstace()只得到乙個物件呢?
* 既然要得到物件,那麼肯定是:
* $variabl = new ????();
* 我們又知道靜態屬性的值是可以所有的物件來繼承的!!!
* 靜態成員是屬於類的,而非物件的!
* 所以:
* 第七步:宣告乙個靜態的屬性,用其儲存例項化的物件
* protectd static $_instance
* * 並且初始值為null
* 那麼我在呼叫getinstance()方法時,只需要判斷其值是否為空即可\
* * public static function getinstance()
* return self::_instance;
* }* 在例項時,一定是這樣寫:
* $x = easyframework_easy_mysql::getinstance();
* 在第一時呼叫時,類的$_instance這個靜態屬性值為null,
* 那麼也就代表,getinstance()方法的判斷條件為真了,
* 也就意味著
* self::$_instance這個成員有了值了!!!
* 並且還返回這個值
* $y = easyframework_easy_mysql::getinstance();
* 在第二次或第n次呼叫時,self::$_instance已經有了值了
* 也就代表getinstance()方法的條件為假了!!!
* 也就代表其中的程式代表不可能執行了!!!
* 也就代表www.cppcns.com將直接返回以前的值了!!!
* ** * */
本文標題: php設計模式之單例模式使用示例
本文位址: /wangluo/php/104259.html
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 擁有...