設計模式中的單例模式是一個簡單但是會經常用到的設計模式,那怎麼理解以及它有什麼用呢?
PHP以及其他的Java,C++等面向對象編程語言在開發中類肯定是要經常用到的,很多時候對於系統中的某些類來說,只有一個實例很重要,例如,一個系統中可以存在多個打印任務,但是只能有一個正在工作的任務;一個系統只能有一個窗口管理器或文件系統;一個系統只能有一個計時工具或ID(序號)生成器。
如何做到這點呢?
我們通過單例模式可以保證系統中,應用該模式的類一個類只有一個實例。即一個類只有一個對象實例
<?php
//單例模式
class sigle{
protected static $ins = null;//定義一個靜態變量用以保存類自身的實例
public static function getIns(){
if(self::$ins === null){
self::$ins = new self();
}
return self::$ins;
}
//以下措施是爲了避免通過繼承,克隆達到多個實例的目的
//方法前加final,則方法不能被覆蓋,類前加fianl,則類不能被繼承
final protected function __construct(){
}
//封鎖clone
final protected function __clone(){
}
}
$s1 = sigle::getIns();
$s2 = sigle::getIns();
if($s1 === $s2){
echo '是一個對象';
}else{
echo '不是一個對象';
}