成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

單例設(shè)計(jì)模式

kviccn / 2929人閱讀

摘要:?jiǎn)卫O(shè)計(jì)模式的特點(diǎn)在用戶(hù)量大的應(yīng)用中會(huì)存在大量的數(shù)據(jù)庫(kù)操作使用單例模式則可以避免大量的操作消耗的資源。使用單例設(shè)計(jì)模式,可以全局控制某些配置信息,方便調(diào)試,單例設(shè)計(jì)模式只有一個(gè)入口,所有的代碼都集中在一個(gè)類(lèi)中,定位問(wèn)題簡(jiǎn)單。

單例設(shè)計(jì)模式的特點(diǎn):

 1、在用戶(hù)量大的應(yīng)用中會(huì)存在大量的數(shù)據(jù)庫(kù)操作, 使用單例模式, 則可以避免大量的new 操作消耗的資源。

  2、使用單例設(shè)計(jì)模式,可以全局控制某些配置信息,方便調(diào)試,單例設(shè)計(jì)模式只有一個(gè)入口,所有的代碼都集中在一個(gè)類(lèi)中,定位問(wèn)題簡(jiǎn)單。

單例模式的特點(diǎn):

  1、一個(gè)類(lèi)只能有一個(gè)類(lèi)對(duì)象(只能實(shí)例化一個(gè)對(duì)象)

  2、它必須自己創(chuàng)建這個(gè)實(shí)例

  3、它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例

  4、構(gòu)造函數(shù)和克隆函數(shù)必須聲明為私有的,這是為了防止外部程序 new 類(lèi)從而失去單例模式的意義

  5、 getInstance()方法必須聲明為公有的,必須調(diào)用此方法以返回唯一實(shí)例的一個(gè)引用

  6、擁有一個(gè)保存類(lèi)的實(shí)例的靜態(tài)成員變量

  7、PHP的單例模式是相對(duì)而言的,因?yàn)镻HP的解釋運(yùn)行機(jī)制使得每個(gè)PHP頁(yè)面被解釋執(zhí)行后,所有的相關(guān)資源都會(huì)被回收

  8、擁有一個(gè)訪問(wèn)這個(gè)實(shí)例的公共的靜態(tài)方法(常用getInstance()方法進(jìn)行實(shí)例化單例類(lèi),通過(guò)instanceof操作符可以檢測(cè)到類(lèi)是否已經(jīng)被實(shí)例化)

  另外,需要?jiǎng)?chuàng)建__clone()方法防止對(duì)象被復(fù)制(克隆)

class Redis {
/**
 * 實(shí)例化的對(duì)象,單例模式.
 * @var iphpdbRedis
 */
static private $_instance= array();
private function __construct($config,$attr=array())
    {
        if ( !extension_loaded("redis") ) {
            E(L("_NOT_SUPPORT_").":redis");
        }
        $this->attr        =    array_merge($this->attr,$attr);
        $this->port        =    $config["REDIS_PORT"] ? $config["REDIS_PORT"] : 6379;
        $this->host        =    $config["DB_HOST"];
        $this->redis       =    new Redis();
        $this->redis->connect($this->host, $this->port, $this->attr["timeout"]);
        if($config["auth"])
        {
            $this->auth($config["auth"]);
            $this->auth    =    $config["auth"];
        }
        $this->expireTime    =    time() + $this->attr["timeout"];    
    }

    /**
     * 得到靜態(tài)實(shí)例化的對(duì)象.
     * 為每個(gè)數(shù)據(jù)庫(kù)建立一個(gè)連接
     * 如果連接超時(shí),將會(huì)重新建立一個(gè)連接
     */
    public static function getInstance($config,$attr=array())
    {
        if(!self::$_instance || !(self::$_instance instanceof self)){
            self::$_instance = new self($config,$attr=array());
        }
        return self::$_instance;
    }

    // 靜止被克隆
    private function __clone(){}
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/30086.html

相關(guān)文章

  • Android中的設(shè)計(jì)模式單例模式

    摘要:總結(jié)單例是運(yùn)用頻率很高的模式,因?yàn)榭蛻?hù)端沒(méi)有高并發(fā)的情況,選擇哪種方式并不會(huì)有太大的影響,出于效率考慮,推薦使用和靜態(tài)內(nèi)部類(lèi)實(shí)現(xiàn)單例模式。 單例模式介紹 單例模式是應(yīng)用最廣的模式之一,也可能是很多人唯一會(huì)使用的設(shè)計(jì)模式。在應(yīng)用單例模式時(shí),單例對(duì)象的類(lèi)必須保證只用一個(gè)實(shí)例存在。許多時(shí)候整個(gè)系統(tǒng)只需要一個(gè)全局對(duì)象,這樣有利于我么能協(xié)調(diào)整個(gè)系統(tǒng)整體的行為。 單例模式的使用場(chǎng)景 確保某個(gè)類(lèi)有且...

    yzd 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式----單例模式

    摘要:不符合設(shè)計(jì)模式中的單一職責(zé)的概念。引入代理實(shí)現(xiàn)單例模式引入代理實(shí)現(xiàn)單例模式的特點(diǎn)我們負(fù)責(zé)管理單例的邏輯移到了代理類(lèi)中。的單例模式對(duì)比在以上的代碼中實(shí)現(xiàn)的單例模式都混入了傳統(tǒng)面向?qū)ο笳Z(yǔ)言的特點(diǎn)。 聲明:這個(gè)系列為閱讀《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》 ----曾探@著一書(shū)的讀書(shū)筆記 1.單例模式的特點(diǎn)和定義 保證一個(gè)類(lèi)僅有一個(gè)實(shí)例,并且提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。 2.傳統(tǒng)面向?qū)?..

    selfimpr 評(píng)論0 收藏0
  • Java設(shè)計(jì)模式優(yōu)化-單例模式

    摘要:?jiǎn)卫J礁攀鰡卫J绞且环N對(duì)象創(chuàng)建模式,用于產(chǎn)生一個(gè)類(lèi)的具體事例。所以解決了線程安全問(wèn)題參考失效原因和解決方案中單例模式的缺陷及單例的正確寫(xiě)法懶漢式靜態(tài)內(nèi)部類(lèi)私有構(gòu)造器獲取單例的方法靜態(tài)內(nèi)部類(lèi)持有單例作為靜態(tài)屬性。 單例模式概述 單例模式是一種對(duì)象創(chuàng)建模式,用于產(chǎn)生一個(gè)類(lèi)的具體事例。使用單例模式可以確保整個(gè)系統(tǒng)中單例類(lèi)只產(chǎn)生一個(gè)實(shí)例。有下面兩大好處: 對(duì)于頻繁創(chuàng)建的對(duì)象,節(jié)省初第一...

    eccozhou 評(píng)論0 收藏0
  • Java設(shè)計(jì)模式-單例模式(Singleton Pattern)

    摘要:如果需要防范這種攻擊,請(qǐng)修改構(gòu)造函數(shù),使其在被要求創(chuàng)建第二個(gè)實(shí)例時(shí)拋出異常。單例模式與單一職責(zé)原則有沖突。源碼地址參考文獻(xiàn)設(shè)計(jì)模式之禪 定義 單例模式是一個(gè)比較簡(jiǎn)單的模式,其定義如下: 保證一個(gè)類(lèi)僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。 或者 Ensure a class has only one instance, and provide a global point of ac...

    k00baa 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<