Laravel 框架使用的設計模式

工廠模式

例如:Auth::user()

此處Auth這個類就是工廠中的方法,Auth是註冊樹中的別名。

好處:

類似於函數的封裝,使對象有一個統一的生成(實例化)入口。當我們對象所對應的類的類名發生變化的時候,我們只需要改一下工廠類類裏面的實例化方法即可。

單例模式

好處:

對象不可外部實例化並且只能實例化一次,節省資源。

實現方式

private static $ins = null;                                                //設置私有的屬性

private function __construct() {}                                       //使外部無法new這個類

public static function getIns() {                                        //暴露給外部的調用方法

        if(self::$ins instanceof self) {

                return self::$ins;

        } else {

                self::$ins = new self();

                return self::$ins;

        }

}

聲明一個類的私有或者保護的靜態變量,構造方法聲明爲私有(不允許外部進行new操作),如果不存在則實例化它,然後返回,如果存在則直接返回。

3:註冊樹模式

使用:

config/app裏的aliases數組便是一個註冊樹

好處:

註冊樹模式就是使用數組結構來存取對象,工廠方法只需要調用一次(可以放到系統環境初始化這樣的地方),以後需要調用該對象的時候直接從註冊樹上面取出來即可,不需要再調用工廠方法和單例模式。
 

class Register {

        protected static $objects

        function set($alias,$object) {                            //將對象映射到全局樹上

                self::$objects[$alias]=$object;

        }

        static function get($name) {                             //獲取對象

                return self::$objects[$name];

        }

        function _unset($alias) {                                  //從全局樹移除對象

                unset(self::$onjects[$alias]);

        }

}

觀察者模式

 

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