中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

PHP 單例模式實(shí)現(xiàn)

2018-07-20    來(lái)源:open-open

容器云強(qiáng)勢(shì)上線(xiàn)!快速搭建集群,上萬(wàn)Linux鏡像隨意使用
<?php
/**
 *
 * User: jifei
 * Date: 2013-07-31
 * Time: 23:19
 */
/**
 * Class Singleton
 * 單例模式,也叫單子模式,是一種常用的軟件設(shè)計(jì)模式。在應(yīng)用這個(gè)模式時(shí),單例對(duì)象的類(lèi)必須保證只有一個(gè)實(shí)例存在,
 * 充分體現(xiàn)了 DRY(Don't Repeat Yourself)的思想。
 *
 * 實(shí)現(xiàn)單例模式的思路是:一個(gè)類(lèi)能返回對(duì)象一個(gè)引用(永遠(yuǎn)是同一個(gè))和一個(gè)獲得該實(shí)例的方法(必須是靜態(tài)方法,通常使用getInstance這個(gè)名稱(chēng));
 * 當(dāng)我們調(diào)用這個(gè)方法時(shí),如果類(lèi)持有的引用不為空就返回這個(gè)引用,如果類(lèi)保持的引用為空就創(chuàng)建該類(lèi)的實(shí)例并將實(shí)例的引用賦予該類(lèi)保持的引用;
 * 同時(shí)我們還將該類(lèi)的構(gòu)造函數(shù)定義為私有方法,這樣其他處的代碼就無(wú)法通過(guò)調(diào)用該類(lèi)的構(gòu)造函數(shù)來(lái)實(shí)例化該類(lèi)的對(duì)象,只有通過(guò)該類(lèi)提供的靜態(tài)方法來(lái)得到該類(lèi)的唯一實(shí)例。
 *
 * 應(yīng)用場(chǎng)景:適用于一個(gè)類(lèi)只有一個(gè)實(shí)例的場(chǎng)景。數(shù)據(jù)庫(kù)連接,日志記錄,購(gòu)物車(chē)
 * 缺點(diǎn):PHP運(yùn)行是頁(yè)面級(jí)別的,無(wú)法直接實(shí)現(xiàn)跨頁(yè)面的內(nèi)存數(shù)據(jù)共享。
 */
class Singleton
{
    //保存類(lèi)實(shí)例的私有的靜態(tài)成員變量
    private static $_instance;
    //私有的構(gòu)造方法
    private function __construct()
    {
        echo 'This is a Constructed method;';
    }
    //創(chuàng)建一個(gè)空的私有__clone方法防止對(duì)象被克隆
    private function __clone()
    {
    }
    //單例方法,用于獲取唯一的實(shí)例對(duì)象
    public static function getInstance()
    {
        if (!(self::$_instance instanceof self)) {
            //instanceof用于檢測(cè)對(duì)象與類(lèi)的從屬關(guān)系,is_subclass_of對(duì)象所屬類(lèi)是否類(lèi)的子類(lèi)
            self::$_instance = new self();
        }
        return self::$_instance;
    }
    //測(cè)試
    public function test()
    {
        echo 123;
    }
}
$a = Singleton::getInstance();
$a->test();
echo PHP_EOL;
$b = Singleton::getInstance(); //第二次調(diào)用時(shí)不執(zhí)行構(gòu)造方法
$b->test();
echo PHP_EOL;
//$c=new Singleton();由于構(gòu)造方法私有,這個(gè)會(huì)報(bào)錯(cuò)的
//$d=clone $a;克隆對(duì)象報(bào)錯(cuò)

標(biāo)簽: 代碼 數(shù)據(jù)庫(kù)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇: 用SharedPreferences寫(xiě)的存儲(chǔ)工具類(lèi)

下一篇:Java 等額本金等額本息工具類(lèi)