单例模式设计(三私一公)
-
私有的静态的保存对象的属性
-
私有的构造方法 阻止类外new对象
-
私有的克隆方法阻止类外克隆对象
-
唯一创建对象的入口就是通过一个共有的静态方法
作用:减少内存消耗,如数据库操作时多次new
数据库对象会造成数据库的重复连接与销毁消耗大量的内存资源,通过单例模式我们就可以达到只实例化一次数据库对象。
如下创建一个单例的数据库类
Class Mysql{
//私有静态对象属性
private static $obj = NULL;
//私有构造方法防止外部new对象
private function __construct(){}
//私有克隆方法,防止外部通过克隆创建对象
private function __clone(){}
//提供一个唯一的创建对象的方法
public static function getInstance(){
//判断当前对象是否被创建
if(!self::$obj instanceof self){
//如果对象不存在则创建
self::$obj = new self
}
return self::$obj;
}
}
$mysql = Mysql::getInstance();//创建mysql对象
instanceof用于判对象是否是某个类的实例
如
<?php
function myload($class){
require ('./'.$class.'.class.php');
}
spl_autoload_register('myload');
class Db extends Mysql {
}
$db = new Mysql();
$db->test();
if ($db instanceof Db){
echo "由Db类创建";
}else{
echo "非Db类创建";
}
//非Db类创建