最新消息:欢迎加入小松的QQ群一起讨论一起学习,搜索页面修改成lua+ElasticSearch,使用php这个页面速度相对慢一点,优化之后速度杠杠的,如有问题请加群联系我

php三大基础设计模式工厂模式 单列模式 注册器模式

PHP 142浏览 0评论

工厂模式
用一个工厂方法替换掉一个类实例,比如mysql实例化,放到factory的createDatabase方法里去实例化

class Factory{
    static function createDatabase(){
        $db = new Database;
        return $db;
    }
}

使用的时候

Factory::createDatabase();

优点
如果要修改Database类名,我只有在工厂类里修改就好了,如果每个文件都使用了new Database,修改类名就比较麻烦

单列模式

很多文件都创建了数据库连接,在实际使用过程中只有创建一次,这时候就可以使用到单列模式

class Database{
    static private $db;
    //声明私有的构造函数,这样new Database就会报错
    private function __construct(){

    }

    static function getInstance()
    {
        //判断mysql的连接是否存在,如果存在就不用new了,直接返回对象
        if (empty(self::$db)) {
            self::$db = new self;
            return self::$db;
        } else {
            return self::$db;
        }
    }
}

使用

Database::getInstance();

更多详情【推荐阅读:php单例模式

注册器模式
将对象注册到全局的树上

class Register
{
    protected static $objects;
    //设置别名,放到全局注册树上
    static function set($alias, $object)
    {
        self::$objects[$alias] = $object;
    }
    //获取对象
    static function get($key)
    {
        if (!isset(self::$objects[$key]))
        {
            return false;
        }
        return self::$objects[$key];
    }
    //删除对象
    function _unset($alias)
    {
        unset(self::$objects[$alias]);
    }
}

使用
设置数据到放到全局树上

$db = new Database;
Register::set("db",$db);

调取全局树上的对象

Register::get("db");
QQ交流群:136351212(满) 455721967

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
转载保留版权:小松博客» php三大基础设计模式工厂模式 单列模式 注册器模式
本文链接地址:https://www.phpsong.com/3020.html

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
木有头像就木有JJ!点这里按步骤申请Gravatar头像吧!

网友最新评论 (2)

加载中,请稍候...
  1. 请问您的文章页面中 代码高亮是怎么实现的?
    2017-03-13 23:56:17回复
    • WP-code-button 自己写的代码插件
      小松2017-03-14 10:04:16回复