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]);

        }

}

观察者模式

 

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