1、含义
作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。
2、单例模式的三个要点:
(1). 需要一个保存类的唯一实例的静态成员变量:
(2). 构造函数和克隆函数必须声明为私有的,防止外部程序new类从而失去单例模式的意义:
(3). 必须提供一个访问这个实例的公共的静态方法(通常为getInstance方法),从而返回唯一实例的一个引用
如下图,例子
class DB{
private $_db;
private static $_instance;//
private function __construct(...){
$this->_db = pg_connect(...);//postgrsql
}
private function __clone() {}; //覆盖__clone()方法,禁止克隆
public static function getInstance(){
if(! (self::$_instance instanceof self) ) {
self::$_instance = new self();
}
return self::$_instance;
}
public function addUserInfo(...) {
}
}
//test
$db = DB::getInstance();
转载整理自:http://blog.youkuaiyun.com/jungsagacity/article/details/7618587
这里还有一篇不错的,推荐阅读:https://www.awaimai.com/patterns/singleton