色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

雞肋的PHP單例模式應(yīng)用詳解

單例模式的要點(diǎn)有三個(gè):
一是某個(gè)類只能有一個(gè)實(shí)例;
二是它必須自行創(chuàng)建這個(gè)實(shí)例;
三是它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。
復(fù)制代碼 代碼如下:
<?php
/* 單例模式舉例,其要點(diǎn)如下:
*
* 1. $_instance 必須聲明為靜態(tài)的私有變量
* 2. 構(gòu)造函數(shù)和克隆函數(shù)必須聲明為私有的,這是為了防止外部程序 new 類從而失去單例模式的意義
* 3. getInstance()方法必須聲明為公有的,必須調(diào)用此方法以返回唯一實(shí)例的一個(gè)引用
* 4. ::操作符只能訪問靜態(tài)變量或靜態(tài)函數(shù)
* 5. php的單例模式是相對(duì)而言的,因?yàn)?a href=/itjie/phpjishu/ target=_blank class=infotextkey>php的解釋運(yùn)行機(jī)制使得每個(gè)php頁面被解釋執(zhí)行后,所有的相關(guān)資源都會(huì)被回收。
* 也就是說,php在語言級(jí)別上沒有辦法讓某個(gè)對(duì)象常駐內(nèi)存。在php中,所有的變量都是頁面級(jí)的,無論是全局變量,
* 還是類的靜態(tài)成員,都會(huì)在頁面執(zhí)行完畢后被清空,結(jié)果會(huì)重新建立新的對(duì)象,這樣也就完全失去了Singleton的意義。
* 不過,在實(shí)際應(yīng)用中同一個(gè)頁面中可能會(huì)存在多個(gè)業(yè)務(wù)邏輯,這時(shí)單例模式就起到了很重要的作用,有效的避免了重復(fù)
* new 對(duì)象(注: new 對(duì)象會(huì)消耗內(nèi)存資源)這么一個(gè)行為,所以我們說php的單例模式是相對(duì)而言的
*
*/
class People
{
static private $_instance = NULL;
public $height = '';
public $age = '';
private function __construct()
{
$this->height = '185';
$this->age = 25;
}
private function __clone()
{
//do something
}
static public function getInstance()
{
if(!self::$_instance instanceof self)
{
//echo 'lgh-big';
self::$_instance = new self;
}
else
{
//for testing only
//echo 'gdc-xiaoairener';
}
return self::$_instance;
}
public function getHeight()
{
echo $this->height;
}
public function getAge()
{
echo $this->age;
}
}
function testInstance()
{
People::getInstance()->getAge();
}
//begin to use the class
$lgh = People::getInstance();
$lgh->getHeight();
echo '<br />';
testInstance();
?>

優(yōu)點(diǎn):單例模式可以避免大量的new操作,因?yàn)槊恳淮蝞ew操作都會(huì)消耗內(nèi)存資源和系統(tǒng)資源
缺點(diǎn):php中,所有的變量無論是全局變量還是類的靜態(tài)成員,都是 頁面級(jí)的,每次頁面被執(zhí)行時(shí),都會(huì)重新建立新的對(duì)象,都會(huì)在頁面執(zhí)行完畢后被清空,這樣似乎php單例模式就沒有什么意義了,所以php單例模式我覺得只 是針對(duì)單次頁面級(jí)請(qǐng)求時(shí)出現(xiàn)多個(gè)應(yīng)用場(chǎng)景并需要共享同一對(duì)象資源時(shí)是非常有意義的。

Why 主站蜘蛛池模板: 宣城市| 龙口市| 历史| 雅江县| 礼泉县| 黑河市| 彭州市| 雅江县| 揭西县| 科技| 广元市| 津市市| 芦溪县| 长春市| 嘉义市| 拉萨市| 景洪市| 东海县| 宁武县| 康定县| 宁国市| 广水市| 鹤峰县| 长沙市| 沙洋县| 共和县| 南充市| 万山特区| 平乡县| 太仆寺旗| 临清市| 上栗县| 哈巴河县| 揭东县| 林甸县| 宜章县| 东丰县| 南江县| 永济市| 嵊州市| 达州市|