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

資訊專欄INFORMATION COLUMN

PHP設(shè)計(jì)模式之注冊(cè)樹(shù)模式

tracymac7 / 3009人閱讀

摘要:簡(jiǎn)介注冊(cè)樹(shù)模式又稱注冊(cè)模式或注冊(cè)器模式。注冊(cè)樹(shù)模式通過(guò)將對(duì)象實(shí)例注冊(cè)到一棵全局的對(duì)象樹(shù)上,需要的時(shí)候從對(duì)象樹(shù)上采摘的模式設(shè)計(jì)方法。使用了注冊(cè)樹(shù)模式后,對(duì)于實(shí)例,我們能夠更好地統(tǒng)籌管理安排,就像使用全局變量一樣的方便實(shí)用。

簡(jiǎn)介

注冊(cè)樹(shù)模式又稱注冊(cè)模式注冊(cè)器模式。注冊(cè)樹(shù)模式通過(guò)將對(duì)象實(shí)例注冊(cè)到一棵全局的對(duì)象樹(shù)上,需要的時(shí)候從對(duì)象樹(shù)上采摘的模式設(shè)計(jì)方法。和果樹(shù)不同的是,果子只能采摘一次,而注冊(cè)樹(shù)上的實(shí)例卻可以無(wú)數(shù)次獲取。

使用了注冊(cè)樹(shù)模式后,對(duì)于實(shí)例,我們能夠更好地統(tǒng)籌管理安排,就像使用全局變量一樣的方便實(shí)用。

實(shí)現(xiàn)

下面我以代碼的形式向大家演示一下,詳解請(qǐng)參照代碼注釋

代碼:

";
        }

    }

    /**
     * 銷毀注冊(cè)樹(shù)中的實(shí)例
     *
     * @param $alias 對(duì)象別名-注冊(cè)樹(shù)中的名稱
     */
    public static function _unset($alias)
    {
        unset(self::$objects[$alias]);
    }
}

/**
 * Class demo 演示類
 */
class demo
{
    /*
     * 測(cè)試方法
     */
    public function test()
    {
        echo "看這里看這里

"; } } // 實(shí)例化測(cè)試類,獲取對(duì)象實(shí)例 $demo = new demo(); // 注冊(cè)到樹(shù)上 $tree = Register::set("de", $demo); // 取出來(lái) $de_true = Register::get("de"); // 測(cè)試 $de_true->test(); // 銷毀 Register::_unset("de"); // 嘗試再次取出來(lái) $de_true_two = Register::get("de"); // 嘗試再次測(cè)試 $de_true_two->test();

運(yùn)行結(jié)果:

// 第一次成功運(yùn)行
看這里看這里
// 第二次銷毀后找不到對(duì)象實(shí)例
您要找的對(duì)象實(shí)例不存在哦
// 第二次銷毀后找不到對(duì)象實(shí)例,故無(wú)法調(diào)用對(duì)象方法,報(bào)錯(cuò)
Fatal error: Call to a member function test() on a non-object in E:phpStudyWWW	est	est.php on line 77
擴(kuò)展

上面已經(jīng)通過(guò)實(shí)例向大家展示了如何構(gòu)建注冊(cè)樹(shù)模式,相信大家應(yīng)該都明白了,那么下面我們就將注冊(cè)樹(shù)模式和工廠模式與單例模式結(jié)合起來(lái),看看如何實(shí)現(xiàn)他們的代碼

代碼:

";
        }

    }

    /**
     * 銷毀注冊(cè)樹(shù)中的實(shí)例
     *
     * @param $alias 對(duì)象別名-注冊(cè)樹(shù)中的名稱
     */
    public static function _unset($alias)
    {
        unset(self::$objects[$alias]);
    }
}

/**
 * Class demo 單例演示類
 */
class singleDemo
{
    // 存放實(shí)例屬性
    public static $_instance;
    public $content;

    // 私有化構(gòu)造函數(shù),防止外部new
    private function __construct($content)
    {
        $this->content = $content;
    }

    // 獲取實(shí)例
    public static function getInstance($content)
    {
        // 判斷實(shí)例是否存在
        if (!(self::$_instance instanceof self)) {
            self::$_instance = new self($content);
        }
        return self::$_instance;
    }

    // 私有化克隆方法,防止克隆
    private function __clone()
    {

    }

    // 測(cè)試方法
    public function test()
    {
        echo $this->content."
"; } } /** * Class factory 工廠類 */ class Factory { // 生產(chǎn) public static function create($content) { // 返回對(duì)象 return singleDemo::getInstance($content); } } // 加入注冊(cè)樹(shù) Register::set("si",Factory::create("我是content參數(shù)內(nèi)容,哈哈")); // 取出對(duì)象實(shí)例 $object = Register::get("si"); // 執(zhí)行測(cè)試方法 $object->test(); // 打印對(duì)象 var_dump($object);

運(yùn)行結(jié)果:

我是content參數(shù)內(nèi)容,哈哈
object(singleDemo)#1 (1) { ["content"]=> string(34) "我是content參數(shù)內(nèi)容,哈哈" }
地址

關(guān)于工廠模式和單例模式,之前的文章我也說(shuō)過(guò),如果有興趣,可以從以下地址前往:

PHP設(shè)計(jì)模式之工廠模式:https://segmentfault.com/a/11...

PHP設(shè)計(jì)模式之單例模式:https://segmentfault.com/a/11...

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

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

相關(guān)文章

  • php 設(shè)計(jì)模式工廠模式、單例模式、注冊(cè)樹(shù)模式

    摘要:的設(shè)計(jì)模式有很多種,本文取最簡(jiǎn)單的三種模式工廠模式單例模式和注冊(cè)樹(shù)模式進(jìn)行簡(jiǎn)單的講解。文件創(chuàng)建完后,咱們回到單元測(cè)試文件文件再執(zhí)行一下單元測(cè)試命令發(fā)現(xiàn),也能返回成功,這樣的話我們就能很方便的修改任何驅(qū)動(dòng)了。 php 設(shè)計(jì)模式之工廠模式、單例模式、注冊(cè)樹(shù)模式 在軟件工程中,創(chuàng)建型設(shè)計(jì)模式承擔(dān)著對(duì)象創(chuàng)建的職責(zé),嘗試創(chuàng)建適合程序上下文的對(duì)象,對(duì)象創(chuàng)建設(shè)計(jì)模式的產(chǎn)生是由于軟件工程設(shè)計(jì)的問(wèn)題,具...

    liangzai_cool 評(píng)論0 收藏0
  • php設(shè)計(jì)模式:工廠模式、單例模式、注冊(cè)樹(shù)模式

    摘要:一工廠模式工廠方法或類中生成對(duì)象,而不是在代碼中直接優(yōu)點(diǎn)將某個(gè)常用類,多個(gè)地方需要時(shí),使用工廠模式,方便類的擴(kuò)展與維護(hù)文件目錄正常實(shí)例化類獲取單例模式的類將實(shí)例化后的類注冊(cè)到全局注冊(cè)樹(shù)中外部調(diào)用得到對(duì)象獲取全局注冊(cè)樹(shù)中的對(duì)象卸載全局注冊(cè)樹(shù)中 一、工廠模式:工廠方法或類中生成對(duì)象,而不是在代碼中直接 new 優(yōu)點(diǎn):將某個(gè)常用類,多個(gè)地方需要 new 時(shí),使用工廠模式,方便類的擴(kuò)展與維護(hù)文...

    孫吉亮 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    Dionysus_go 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    vspiders 評(píng)論0 收藏0
  • 如何"有計(jì)劃,高效率,優(yōu)簡(jiǎn)歷"應(yīng)對(duì)面試

    摘要:雖然有了十全的計(jì)劃,但如何高效率去記住上面那么多東西是一個(gè)大問(wèn)題,看看我是怎么做的。 前言 前一篇文章講述了我在三月份毫無(wú)準(zhǔn)備就去面試的后果,一開(kāi)始心態(tài)真的爆炸,但是又不服氣,一想到每次回來(lái)后家人朋友問(wèn)我面試結(jié)果的期待臉,越覺(jué)得必須付出的行動(dòng)來(lái)證明自己了。 面經(jīng)傳送門:一個(gè)1年工作經(jīng)驗(yàn)的PHP程序員是如何被面試官虐的? 下面是我花費(fèi)兩個(gè)星期做的準(zhǔn)備,主要分三部分: 有計(jì)劃——計(jì)劃好...

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

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

0條評(píng)論

閱讀需要支付1元查看
<