PHP設計模式(註冊模式)

一、什麼是註冊模式?

        註冊模式也稱註冊樹或註冊器模式,將類對象註冊到全局樹(註冊類)上,那麼他就可以被任意地方訪問。

二、爲什麼要用註冊模式?

        單例模式解決的是如何在整個項目中創建唯一對象實例的問題,工廠模式解決的是如何不通過new建立實例對象的方法。 那麼註冊樹模式想解決什麼問題呢? 在考慮這個問題前,我們還是有必要考慮下前兩種模式目前面臨的侷限。  首先,單例模式創建唯一對象的過程本身還有一種判斷,即判斷對象是否存在。存在則返回對象,不存在則創建對象並返回。 每次創建實例對象都要存在這麼一層判斷。 工廠模式更多考慮的是擴展維護的問題。 總的來說,單例模式和工廠模式可以產生更加合理的對象。怎麼方便調用這些對象呢?而且在項目內如此建立的對象好像散兵遊勇一樣,不便統籌管理安排啊。因而,註冊樹模式應運而生。不管你是通過單例模式還是工廠模式還是二者結合生成的對象,都統統給我“插到”註冊樹上。我用某個對象的時候,直接從註冊樹上取一下就好。這和我們使用全局變量一樣的方便實用。 而且註冊樹模式還爲其他模式提供了一種非常好的想法。

三、如何實現註冊模式?

<?php
class Register
{
    static protected $objects = array();//全局樹  array
 
    //設置
    static function set($alias,$object)
    {
        self::$objects[$alias] = $object;
    }
    //獲得
    static function get($alias)
    {
        return self::$objects[$alias];
    }
    //註銷
    static function _unset($alias)
    {
        unset(self::$objects[$alias]);
    }
}

//註冊
Register::set('conf',array('dbhost'=>'127.0.0.1')); // 參數(別名,類或/其它屬性)
//獲取
print_r(Register::get('conf')); // 通過別名獲取類或配置屬性

大家有什麼想法可在底下留言一起探討,如果覺得此篇文章對您有用,請幫忙點個贊,謝謝!^_^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章