面向對象之單例設計模式

<?php
//單態(單例)設計模式:只讓一個類只能創建一個對象
class Single{    
          static $obj=null;    
//要讓一個類只能創建一個對象則得先讓這個類不能創建對象,所以可以先將構造方法私有化;        
          private function __construct(){
          }    
//通過類調用靜態方法的形式來創建對象,但是這樣可以在類外部多次調用這個靜態方法來創建多個對象也還不能達到我們的要求    
       static function getobj(){        
//注意:在類中的方法中使用類中的靜態屬性時記得加self                                   
            if(is_null(self::$obj)){            
//通過在類中的方法來創建對象
               self::$obj=new self;
               return self::$obj; 
        }        
//如果多次調用該靜態方式創建對象時,如果該對象已經存在,則直接返回之前已經創建完的對象拿過去使用,不用重新創建        
            else{
              return self::$obj;        
         }    
       }
          function __destruct(){ 
                 echo "##############<br>";
       }
  }
//第一次調用該靜態方法創建對象時,因爲$obj爲空所以會創建一個新的對象;person::getobj();多次調用該靜態方法時,因爲$obj已經存在所以不會重新創建對象
$obj1=Single::getobj();
$obj2=Single::getobj();
var_dump($obj1===$obj2);//如果結果爲true,表示單例模式構造成功
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章