單例(Singleton)
保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)
單例模式
保證一個(gè)類僅有一個(gè)實(shí)例梭姓,并提供一個(gè)訪問它的全局訪問點(diǎn)零抬,讓類自身負(fù)責(zé)保存它的唯一實(shí)例除师,并提供一個(gè)訪問該實(shí)例的方法凝化,這就是單例模式。
單例模式的優(yōu)點(diǎn)
1.使用單例模式可以避免大量的new操作官辽,因?yàn)槊恳淮蝞ew都會(huì)消耗系統(tǒng)和內(nèi)存的資源
2.單例模式會(huì)阻止其他對(duì)象實(shí)例化其他對(duì)象實(shí)例化其自己的單例對(duì)象的副本蛹磺,從而確保所有對(duì)象都訪問唯一實(shí)例。
3.因?yàn)轭惪刂屏藢?shí)例化過程同仆,從而類可以靈活更改實(shí)例化過程萤捆。
單例模式的特點(diǎn)
1.只能有一個(gè)實(shí)例,必須擁有一個(gè)構(gòu)造函數(shù),并且必須被標(biāo)記為private
2.必須自行創(chuàng)建這個(gè)實(shí)例乓梨,擁有一個(gè)保存類的實(shí)例的靜態(tài)成員變量
3.必須給其他對(duì)象提供這一實(shí)例鳖轰,擁有一個(gè)訪問這個(gè)實(shí)例的公共的靜態(tài)方法
class Singleton
{
//創(chuàng)建靜態(tài)私有的變量保存該類對(duì)象
static private $instance;
//防止使用new直接創(chuàng)建對(duì)象
private function __construct(){
}
//防止使用clone克隆對(duì)象
private function __clone(){
}
static public function getInstance()
{
//判斷$instance是否是Singleton的對(duì)象,不是則創(chuàng)建
if (!self::$instance instanceof self) {
self::$instance = new self();
}
return self::$instance;
}
public function test()
{
echo "我是一個(gè)單例模式";
}
}
$sing = Singleton::getInstance();
$sing->test();