首页 > 编程语言 >浅谈PHP设计模式的注册树模式

浅谈PHP设计模式的注册树模式

时间:2022-11-08 00:55:37浏览次数:43  
标签:PHP 浅谈 RegTree objects static key 设计模式 name

简介:

注册树模式,属于结构型的设计模式。一种很简单的设计模式

适用场景:

类似IOC。写一个庞大的类库的时候,为了方便各种资源的归纳,可以统一放到一棵树上。

优点:

  1. 把一个个游兵散将一样的对象进行统一管理。
  2. 另外可以根据项目的业务场景自定义层级。

缺点:

  1. 增加项目的复杂性。
  2. 纯粹的注册树写法,缺少单例模式的有点,可能存在重复创建对象的可能,需要做额外的验证。

代码

class RegTree {
    private static $objects;

    //注册
    public static function set($name, $object) {
        self::$objects[$name] = $object;
    }

    //获取
    public static function get($name) {
        if(empty(self::$objects[$name])) {
            throw new \Exception($name . ' does not exists');
        }
        return self::$objects[$name];
    }

    public static function destroy($name) {
        unset(self::$objects[$name]);
    }
}

//调用端=============================================
$key = 'std_class';
RegTree::set($key, new \StdClass());
print_r(RegTree::get($key));
RegTree::destroy($key);
print_r(RegTree::get($key));

标签:PHP,浅谈,RegTree,objects,static,key,设计模式,name
From: https://www.cnblogs.com/phpphp/p/16867997.html

相关文章

  • 设计模式---装饰器模式
    简述运行时,为原对象拓展新的行为。相较于传统的继承来拓展新的行为,装饰器模式更为的灵活多变,当然实现起来也更为复杂。话不多说,看个优化案例吧。优化案例最初版v0现......
  • sublime配置php
    sublime下载直接从sublime的官网下载安装文件:https://www.sublimetext.com/万物的起始:安装插件管理工具packagecontrol使用Ctrl+、(数字1左边那个)快捷键或者通过View......
  • 设计模式学习(三):工厂模式
    设计模式学习(三):工厂模式作者:Grey原文地址:博客园:设计模式学习(三):工厂模式CSDN:设计模式学习(三):工厂模式工厂模式工厂模式是创建型模式,工厂模式分为:简单工厂,工厂方法和抽......
  • day24 设计模式
    day24设计模式概述:设计模式是一种解决某个问题的固定模式(原理都是一样的),它不区分语言.常用的设计模式有23种,他分为三类(主要针对的是类和对象)设计......
  • JAVA 模板设计模式
    今天来介绍下一个我觉得蛮不错的设计模式(比较容易应用于业务场景),它就是---模板设计模式。OK,我们直接看代码:模板模式,那当然我们需要建一个模板先,建一个抽象类,VehicleControlM......
  • 23 种设计模式C++实现
    设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:​​单例模式​​、​​原型模式​​、​​工厂方法模式​​、​​抽象工厂模式​​、​​建造者模式​​。结构......
  • 设计模式(十八)桥接模式 C++
    桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。桥......
  • JAVA 责任链设计模式
    这次介绍责任链模式,采用最普遍的请假例子来编码实现。先给列出个模拟的需求,一个人请假,调用一个接口,传入的参数是他请假的天数。然后,请假的天数---->如果小于2天,由直属领导......
  • php获取当前时间最近的整数时间
    比如当前时间是03那么获取应该是05,如果是07获取应该是10//当前时间的分钟数2020-07-2515:07:36$time=date('i');//最近的5分钟就除以5,同理10分钟就除10$aa=(i......
  • 创建型设计模式-原型模式(深拷贝,浅拷贝)
    Person类:publicclassPerson{publicstringName{get;set;}publicintAge{get;set;}publicAddressAddress{get;set;......