PHP -- 單例模式,程式碼演示
阿新 • • 發佈:2018-11-08
單例模式: 單例模式又稱為職責模式,它用來在程式中建立一個單一功能的訪問點,通俗地說就是例項化出來的物件是唯一的。
所有的單例模式至少擁有以下三個必須和一個必要元素:
1 | 必須擁有一個private的建構函式 |
2 | 必須擁有一個儲存類的例項的靜態成員變數 |
3 | 必須擁有一個訪問這個例項的公共的靜態方法 |
4 | 必要擁有一個防止克隆的函式 |
單例類不能再其它類中直接例項化,只能被其自身例項化。它不會建立例項副本,而是會向單例類內部儲存的例項返回一個引用。
下面是程式碼演示:
class people { //靜態成員變數 static private $instance; private $config; // private的建構函式 private function __construct($config){ $this->config = $config; } // 防克隆函式 private function __clone(){ // TODO: Implement __clone() method. } // 靜態方法 static public function getConfig($config){ if (!self::$instance instanceof self) { self::$instance = new self($config); } return self::$instance; } public function getName(){ echo $this->config; } }
執行以下程式碼:
$a = people::getConfig(1);
$a->getName();
echo "<br/>";
$b = people::getConfig(3);
$b->getName();
網頁會顯示:
$a建立物件後,引數是1 ;
$b沒有建立物件,而是直接使用$instance儲存的唯一物件,所以輸出的引數並沒有變為3。
參考資料:
https://www.cnblogs.com/yuyu1993/p/5576010.html
http://www.cnblogs.com/DeanChopper/p/4761253.html
https://www.cnblogs.com/wwjchina/p/7724271.html
歡迎補充!
千而の大獅子!