设计模式 -- 注册模式

注册模式其实想实现的目的是:有条理的保存和管理对象。why? 开发者想把对象一个一个存放到一个变量里面,想像操作变量一样操作对象,比如

$arr=['zhangsan'=>3,'lisi'=>4];

如果 能通过zhangsan,lisi这个键来操作对象岂不是美滋滋?
那就能像操作变量一样操作对象了,unset等,巴适的很!

下面讲解一下注册模式的基本例子

    <?php  
   
    class  Registry  {  
      protected  static  $store  =  array();    //静态变量存 多个对象 数据 
      private static $instance;  

      public static function instance() {  
          if(!isset(self::$instance)) {  
              self::$instance = new self();  
          }  
          return self::$instance;  
      }  

      //判断对象是否存在
      public function  isValid($key)  {  
        return  array_key_exists($key,  Registry::$store);  
      }  

      //通过键获取对象
      public function  get($key)  {  
        if  (array_key_exists($key,  Registry::$store))  
        return  Registry::$store[$key];  
      }  

      //通过键值设置对象
      public  function  set($key,  $obj)  {  
        Registry::$store[$key]  =  $obj;  
      }  
    }  


    //例子类
    class ConnectDB {  

        private $host;  
        private $username;  
        private $password;  

        private $conn;  


        public function __construct($host, $username, $password){  
            $this->host = $host;  
            $this->username = $username;  
            $this->password = $password;  
        }  

        public function getConnect() {  
            return mysql_connect($this->host,$this->username,$this->password);  
        }  

    }  


    //使用测试  
    $reg = Registry::instance(); 
    //把对象①存入变量 
    $reg->set('db1', new ConnectDB('localhost', 'root', 'mckee'));  
    //把对象②存入变量
    $reg->set('db2', new ConnectDB('192.168.1.198', 'test', '0K5Dt@2jdc8#x@')); 
 
    print_r($reg->get('db1'));  
    print_r($reg->get('db2'));  

总结:注册模式,主要想像操作变量一样,对多个对象进行存放和管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值