php設計模式之單例模式

2021-08-26 21:35:47 字數 1240 閱讀 1447

**:

單例模式的要點有三個:

一.是某個類只能有乙個例項;

二.是它必須自行建立這個例項;

三.是它必須自行向整個系統提供這個例項。

<?php

/* 單例模式舉例,其要點如下:

** 1. $_instance 必須宣告為靜態的私有變數

* 2. 建構函式和轉殖函式必須宣告為私有的,這是為了防止外部程式 new 類從而失去單例模式的意義

* 3. getinstance()方法必須宣告為公有的,必須呼叫此方法以返回唯一例項的乙個引用

* 4. ::操作符只能訪問靜態變數或靜態函式

* 5.

php的單例模式是相對而言的,因為php的解釋執行機制使得每個php頁面被解釋執行後,所有的相關資源都會被**。

* 也就是說,php在語言級別上沒有辦法讓某個物件常駐記憶體。在php中,所有的變數都是頁面級的,無論是全域性變數,

* 還是類的靜態成員,都會在頁面執行完畢後被清空,結果會重新建立新的物件,這樣也就完全失去了singleton的意義。

* 不過,在實際應用中同乙個頁面中可能會存在多個業務邏輯,這時單例模式就起到了很重要的作用,有效的避免了重複

* new 物件(注: new 物件會消耗記憶體資源)這麼乙個行為,所以我們說php的單例模式是相對而言的**/

class people

private function __clone()

static public function getinstance() else

return self::$_instance;

}public function getheight()

public function getage()

}function testinstance()

//begin to use the class

$lgh = people::getinstance();

$lgh->getheight();

echo '

';testinstance();

?>

優點:單例模式可以避免大量的new操作,因為每一次new操作都會消耗記憶體資源和系統資源

缺點:在php中,所有的變數無論是全域性變數還是類的靜態成員,都是 頁面級的,每次頁面被執行時,都會重新建立新的物件,都會在頁面執行完畢後被清空,這樣似乎php單例模式就沒有什麼意義了,所以php單例模式我覺得只 是針對單次頁面級請求時出現多個應用場景並需要共享同一物件資源時是非常有意義的。

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 擁有...