PHP實現常用設計模式之單例模式

設計模式中的單例模式是一個簡單但是會經常用到的設計模式,那怎麼理解以及它有什麼用呢?
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 '不是一個對象';
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章