PHP设计模式之一:单例模式(1)

单例模式:一个对象只负责一个特定的任务,减少重复性任务.

以最常见的连接数据库为例

Database.php

<?php

class Database {

   //保存类实例的静态成员变量
  private static $db;

   //private标记的构造方法,防止外部实例

  private function __construct(){
        
    }

   //创建__clone方法防止对象被复制克隆

   public function __clone(){
    trigger_error('Clone is not allow!',E_USER_ERROR);
   }

 
   //单例方法,用于访问实例的公共的静态方法

   static function getInstance(){
       //判断对象是否是自身类的实例
      if(!(self::$db instanceof self)){

        self::$db = new self;
      }

      return self::$db;

  }

}

index.php

<?php

//用new实例化private标记构造函数的类会报错

//$db= new Database();

//正确方法,用双冒号::操作符访问静态方法获取实例

$db= Database::getInstance();

//复制(克隆)对象将导致一个E_USER_ERROR

$db_clone = clone $db; 

new对象都会消耗内存,单例模式防止了重复new同一对象而产生的消耗.

之后不管有创建多少 $db= Database::getInstance(); 他们都共用同一个对象的.

猜你喜欢

转载自blog.csdn.net/root_admin_12138/article/details/81195249
今日推荐