PHP设计模式 -- 注册模式

参考文章:https://segmentfault.com/a/1190000007495855

简介

注册树模式又称注册模式注册器模式。注册树模式通过将对象实例注册到一棵全局的对象树上,需要的时候从对象树上采摘的模式设计方法。和果树不同的是,果子只能采摘一次,而注册树上的实例却可以无数次获取。

使用了注册树模式后,对于实例,我们能够更好地统筹管理安排,就像使用全局变量一样的方便实用。

示例:

<?php

/**
 * Class Register 注册树类
 */
class Register
{
    // 树的枝干-用于储存树上的果实(实例)
    public static $objects; // array

    /**
     * 将实例插入注册树中
     *
     * @param $alias 对象别名-注册树中的名称
     * @param $object 对象实例
     */
    public static function set($alias, $object)
    {
        self::$objects[$alias] = $object;
    }

    /**
     * 从注册树中读取实例
     *
     * @param $alias 对象别名-注册树中的名称
     *
     * @return mixed 返回的对象实例
     */
    public static function get($alias)
    {
        if (isset(self::$objects[$alias])) {
            return self::$objects[$alias];
        } else {
            echo ‘对象弄丢了‘;
        }
    }

    /**
     * 销毁注册树中的实例
     *
     * @param $alias 对象别名-注册树中的名称
     */
    public static function _unset($alias)
    {
        unset(self::$objects[$alias]);
    }
}

Register::set(‘conf‘, array(‘dbhost‘ => ‘127.0.0.1‘));
print_r(Register::get(‘conf‘));

结果:

原文地址:https://www.cnblogs.com/chenhaoyu/p/9063520.html

时间: 2024-08-30 08:55:24

PHP设计模式 -- 注册模式的相关文章

设计模式之注册模式

注册模式 解决全局共享,交换对象.也叫注册树模式. 实现 //注册树模式 class Register { //这个变量应该能是全局的 protected static $trees; //注册到注册树上方法 public static function set($alias, $obj) { self::$trees[$alias] = $obj; } //获取对象 public static function get($alias) { return self::$trees[$alias]

PHP 设计模式 单例模式 工厂模式 注册模式

1.工厂模式,工厂方法或者类生成对象,而不是在代码中直接new 2.单例模式,使某个类的对象仅允许创建一个 3.注册模式,全局共享和交换对象 项目文件目录 入口文件 index.php 1 <?php 2 /** 3 * Created by PhpStorm. 4 * Author: Administrator 5 * Date: 14-11-22 6 * Time: 下午3:42 7 */ 8 9 define('BASEDIR',__DIR__); 10 include BASEDIR.'

Review PHP设计模式之——注册模式

注册模式: 1 class DbConnections{ 2 var $_store = array(); 3 public function isValid($key) { 4 return isset($this->_store[$key]); 5 } 6 7 public function &get($key){ 8 if (isset($this->_store[$key])) 9 return $this->_store[$key]; 10 } 11 12 public

Yii2设计模式——注册树模式

注册树模式 注册树模式(Registry Pattern)又叫注册模式.注册器模式.注册树模式通过将对象实例注册到一棵全局的对象树上,需要的时候从对象树上采摘的模式设计方法. 为什么要采用注册树模式? 单例模式在整个项目中创建唯一实例的问题:工厂模式封装了对象的创建方式(工厂方法——用一个抽象方法,抽象工厂——用一簇抽象方法),使得不必总用new关键词去获取对象:创建者模式则是分步骤的创建实例的各个部分:在Yii2中则通过依赖注入容器DI去获取实例... 这些方法实际上都是解决一个问题——如何合

php设计模式之注册模式

注册模式,解决全局共享和交换对象.已经创建好的对象,挂在到某个全局可以使用的数组上,在需要使用的时候,直接从该数组上获取即可.将对象注册到全局的树上.任何地方直接去访问. <?php class Register { protected static $objects; function set($alias,$object)//将对象注册到全局的树上 { self::$objects[$alias]=$object;//将对象放到树上 } static function get($name){

Java 设计模式 -- 复合模式之二

接着上文的鸭鸣例子:Java 设计模式 -- 复合模式之一 上文中,我们的鸭鸣实现了 装饰者模式  适配器模式  工厂模式的结合 现在,又需要进行改动了,上文,是可以统计一群鸭子的叫声,现在需要能够观察个别鸭子的行为 引入观察者模式: 任何想被观察的Quackable都必须实现下面的接口 public interface QuackObservable { public void registerObserver(Observer observer); public void notifyobs

设计模式-Decorator模式

目录 一个例子(贪玩蓝月) 传统继承实现 装饰器模式实现 对比 总结 Decorator(装饰器)模式属于结构型模式. 比如当其需要三种不同的附加特性,可以为其创建三个派生类.但是若它还需要同时具有其中两种特性或者是各种特性的任意组合的时候,类继承的方法就不再适合了. 它允许向一个现有的对象不通过继承来添加新的功能,同时又不改变其结构. 一个例子(贪玩蓝月) 前一阵子张家辉代言的<贪玩蓝月>广告火了,"我系喳喳辉,是兄弟就来砍我-"被洗脑到现在,正好用这个游戏来解释一下装饰

设计模式 - 代理模式(proxy pattern) 未使用代理模式 详解

代理模式(proxy pattern) 未使用代理模式 详解 本文地址: http://blog.csdn.net/caroline_wendy 部分代码参考: http://blog.csdn.net/caroline_wendy/article/details/37698747 如果需要监控(monitor)类的某些状态, 则需要编写一个监控类, 并同过监控类进行监控. 但仅仅局限于本地, 如果需要远程监控, 则需要使用代理模式(proxy pattern). 具体方法: 1. 类中需要提供

设计模式 - 迭代器模式(iterator pattern) Java 迭代器(Iterator) 详解

迭代器模式(iterator pattern) Java 迭代器(Iterator) 详解 本文地址: http://blog.csdn.net/caroline_wendy 参考迭代器模式(iterator pattern): http://blog.csdn.net/caroline_wendy/article/details/35254643 Java的标准库(util)中包含迭代器接口(iterator interface), import java.util.Iterator; 继承(