您好,登錄后才能下訂單哦!
單例模式是為了防止多次重復(fù)實例化,例如數(shù)據(jù)庫的重復(fù)連接,造成資源浪費。
重點是:
1/ 一個類只有一個對象
2/ 類為自行創(chuàng)建,不能通過new來聲明
3/ 用途:在整個系統(tǒng)中統(tǒng)一提供這一個對象。
寫法:
1/ 類中定義一個私有靜態(tài)變量
2/ 類中只提供私有的構(gòu)造函數(shù)
3/ 提供一個靜態(tài)公有函數(shù)用來創(chuàng)建私有對象本身。
4/ 使用__clone防止克隆
<?php
//學(xué)習(xí)使用單例模式
class Danli
{
private static $db = null;
private static $num = 0;
private function __construct()
{
echo "對象已經(jīng)構(gòu)建完成:".self::$num."次\n";
}
public static function getInstance()
{
if(self::$db instanceof self){
echo "已經(jīng)實例化,不要重復(fù)實例\n";
return self::$db;
}else{
self::$num +=1;
return self::$db = new self();
}
}
static function test()
{
echo "調(diào)用成功\n";
}
public function __clone()
{
echo "不能克隆哦";
}
}
$d = Danli::getInstance();
$d->test();
$c = Danli::getInstance();
$c->test();
$d= clone $c;
//
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。