当先锋百科网

首页 1 2 3 4 5 6 7
<?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,表示单例模式构造成功