zoukankan      html  css  js  c++  java
  • php设计模式注册表模式

     注册表模式其实是一个单例模式,注册表类提供静态方法(或单例对象的实例化方法)来让其它对象访问其中的数据(通常是对象)。整个系统中的每个对象都可以访问这些数据对象。  下面是基本的注册表类的代码:

    <?php
    class Registry {
    private static $instance;
    private $request;//注册表的内容类
    private function __construct(){}//本类,不可实例化
    static function instance(){//单例类,通过这个方法返回实例
    if (!isset(self::$instance)){self::$instance=new self();}
        return self::$instance;
    }
    function getRequest(){//返回注册的内容类
    return $this->request;
    }
    function setRequest(request $request){//设置注册的内容类
    $this->request=$request;
    }
    }
    class request{//被 注册的类
    private $webname="WEB开发笔记";
    private $url="www.123.com";
    function getName(){
    echo $this->url;//输出[url]www.123.com[/url]
    }
    }//被注册的空类
    //使用
    $reg=Registry::instance();
    $reg->setRequest(new request());
    $request=$reg->getRequest();
    $request->getName();//输出[url]www.123.com[/url]

    注册表的作用是提供系统级别的对象访问功能。

    为什么不直接实例化Request类呢?

    注册表模式其实就是一个全局对象的存取器,抛开那些模式、OO不谈,其实就是一个保存全局变量的地方。

    本质上和直接调用$_GLOBAL['request']没有区别。

    上面的只能注册一个类,我们可以使用集合来支持多个类的存储,参见:http://www.chhua.com/web-note1581

  • 相关阅读:
    android监听屏幕打开关闭广播无响应的情况
    2020/4/9
    2020/4/8
    2020/4/7
    conda镜像
    2020/4/3
    2020/4/2
    2020/4/1
    EYELIKE源代码解读
    bzoj3162 独钓寒江雪
  • 原文地址:https://www.cnblogs.com/youxin/p/3099138.html
Copyright © 2011-2022 走看看