PHP设计模式——单例模式

时间:2022-12-11 12:19:48
<?php
/**
 * 单例模式
 * 通过提供对自身共享实例的访问,单例模式用于限定特定对象只能被创建一次的情况。
 * 
 * 应当阻止创建某个对象的多个实例时,我们最好用单例模式来创建这个对象。
 */
class Single{
    protected static $_instance = NULL;
    protected $_handle = NULL;
    //方法前加final,则方法不能被重写;类前加final,则类不能被继承。
    final protected function __construct(){
        //连接数据库
        $dbName = 'design';
        $this->handle = mysql_connect('localhost','root','');
        mysql_select_db($dbName,  $this->handle);
        echo $dbName.'数据库连接成功<br>';
    }
    //禁止克隆对象
    final protected function __clone() {
    }
    public static function getInstance() {
        if(!self::$_instance instanceof self){
            self::$_instance = new self;
        }
        return self::$_instance;
    }
}

$a = Single::getInstance();
$b = Single::getInstance();
if($a === $b){
    echo '是同一对象';
}else{
    echo '不是同一对象';
}