1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class
Db{
private
function
__construct(){}
private
static
$instance
;
public
static
function
getInstance(){
if
(!self::
$instance
instanceof
Db){
self::
$instance
=
new
self();
}
return
self::
$instance
;
}
private
function
__clone(){}
}
$db1
= Db::getInstance();
$db2
= Db::getInstance();
$db3
= Db::getInstance();
var_dump(
$db1
);
var_dump(
$db2
);
var_dump(
$db3
);
|
单例模式又称为职责模式,它用来在程序中建立一个单一功能的访问点,通俗地说就是实例化出来的对象是惟一的。
全部的单例模式至少拥有如下三种公共元素:
1. 它们必须拥有一个构造函数,而且必须被标记为private
2. 它们拥有一个保存类的实例的静态成员变量
3. 它们拥有一个访问这个实例的公共的静态方法
单例类不能再其它类中直接实例化,只能被其自身实例化。它不会建立实例副本,而是会向单例类内部存储的实例返回一个引用。php