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