php 三种基础设计模式结合使用

来源:互联网 发布:linux 虚拟机 双系统 编辑:程序博客网 时间:2024/05/23 18:07
<?php//单例模式class DB{    private static $db;//私有化禁止外部调用    final private function __construct(){    }    //禁止被克隆    private function __clone(){//私有化禁止被克隆    }    static function getInstance(){//静态化        if(self::$db == null && !(self::$db instanceof self)){            self::$db=new self();        }        return self::$db;    }}/* * 单例模式是为了节省资源,比如数据库对象,一个实例就够 * *///注册树模式class Register{    protected static $objects;     static function _set($alias, $obj){        self::$objects[$alias] = $obj;    }     static function _unset($alias){        unset(self::$objects[$alias]);    }     static function _get($obj){        if(isset(self::$objects[$obj])){            return self::$objects[$obj];        }    }}/* * 注册树模式 把对象注册到全局的书上面,取的时候只需要在从树上取即可 * */class Factory{    static function createDB(){        $db = DB::getInstance();//工厂结合单例模式        Register::_set('mysql',$db);        return $db;    }}/*  使用场景 当我们定义一个db类,在很多文件中都有使用 new DB();当 我们的DB 类根据需求发生改变比如变成了DA 此时就不需要所有文件去更改new DB();因为使用的是 工厂模式;只需要更改Factory内部的代码就行了; */$db = Factory::createDB();//工厂只调用一次把数据库对象注册到树上,取的时候就//下次再取db$db = Register::_get('mysql');
原创粉丝点击