什么是注册树模式

想象一下树形的挂衣架,你想穿哪个衣服了就拿哪个衣服,注册树模式就像极了挂衣架。注册树模式以一个数组来保存所有会用到的实例,等到用这个实例的时候直接去数组中取就可以了,避免多次创建这个实例。

使用场景

很多框架会用到注册树模式,比如用户众多的Laravel框架。

优点

降低资源消耗,提高程序效率

示意图

项目目录结构

代码示例

HashGenarate.php 生成hash的单例类

<?php
class HashGenarate{public $hash;protected static $_instance;final protected function __construct(){$this->hash = hash('sha384',rand(99999,99999999).time());}public static function getInstance(){if(!self::$_instance){self::$_instance = new self();}return self::$_instance;}private function __clone(){// TODO: Implement __clone() method.}
}
RegisterContainer.php 注册实例到容器类
<?php/*** 容器注册* Class RegisterContainer*/
class RegisterContainer
{//注册树,用来保存容器启动需要的对象实例public static $_tree = [];//新增对象实例static function add($alias, $object){self::$_tree[$alias] = $object;}//获取对象实例static function get($alias){return self::$_tree[$alias];}//删除对象实例static public function del($alias){unset(self::$_tree[$alias]);}
}

Container.php 容器类

<?php
require_once 'HashGenarate.php';
require_once 'RegisterContainer.php';/*** 容器* Class Container*/
class Container
{public function register(){//注册一个单例到容器RegisterContainer::add(HashGenarate::class, HashGenarate::getInstance());}public function getHash($alias){//获取该单例$object = RegisterContainer::get($alias);echo $object->hash;}public function del($alias){//删除该单例RegisterContainer::del($alias);}
}$container = new Container();
$container->register();
$container->getHash(HashGenarate::class);
$container->del(HashGenarate::class);

设计模式之注册树模式相关推荐

  1. php注册树模式,php基础设计模式大全(注册树模式、工厂模式、单列模式)

    废话不多说了,先给大家介绍注册树模式然后介绍工厂模式最后给大家介绍单列模式,本文写的很详细,一起来学习吧. php注册树模式 什么是注册树模式? 注册树模式当然也叫注册模式,注册器模式.之所以我在这里 ...

  2. php注册树模式,PHP设计模式之注册树模式

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

  3. 设计模式(九)--注册树模式

    https://www.cnblogs.com/DeanChopper/p/4767181.html 转载于:https://www.cnblogs.com/Caoxt/p/10155924.html

  4. 基础设计模式:单例模式+工厂模式+注册树模式

    单例模式: 通过提供自身共享实例的访问,单例设计模式用于限制特定对象只能被创建一次. 使用场景: 一般数据库实例都会用单例模式 实现: 单例设计模式就是要一个类只能实例化一个对象. 要想让一个类只能实 ...

  5. php工厂模式和单例模式,php 设计模式之工厂模式、单例模式、注册树模式

    php 设计模式之工厂模式.单例模式.注册树模式 在软件工程中,创建型设计模式承担着对象创建的职责,尝试创建适合程序上下文的对象,对象创建设计模式的产生是由于软件工程设计的问题,具体说是向设计中增加复 ...

  6. php注册树模式,PHP设计模式之详记注册树模式

    一.什么是注册树模式 注册树模式又叫注册模式.注册器模式.注册树模式是将经常使用到的对象实例挂到一颗全局的树上,需要使用时从数树上取出即可. 举个栗子:有一个空的工具箱.需要维修东西,因此买了扳手和螺 ...

  7. php注册树模式,PHP三种基本设计模式(工厂模式、单例模式、注册树模式)

    一.工厂设计模式 index.php $db = IMooc\Factory::createDatabase(); 使用工厂类的静态方法直接创建一个dababase对象,当类名发生修改时,在工厂里修改 ...

  8. 慕课网----大话PHP设计模式 三(三种基本设计模式-工厂模式,单例模式,注册树模式)

    1)工厂模式: 工厂方法或者类生成对象,而不是代码中直接new 多用来生成对象 好处.如果很多个文件都使用了这个类的话,如果修改需要去每个文件下都进行修改,而使用工厂模式的话,则只用在类里面修改创建方 ...

  9. php 注册树,php设计模式-注册树模式

    注册树模式概念 注册树模式也叫注册模式或注册器模式.注册树模式将对象实例注册到一棵全局的对象树上,需要的时候从对象树上获取即可. 注册树模式优点 单例模式创建唯一对象的过程本身还有一种判断,即判断对象 ...

最新文章

  1. 【C】数组数组初始化总结
  2. 热点话题:全面解析有关网上邻居的内幕
  3. 千万级流量的大型分布式系统架构设计
  4. 目标跟踪学习算法DSST
  5. php scandir 目录树,使用php scandir函数遍历文件夹目录和所有文件
  6. package关键字的使用
  7. oracle没有网卡驱动,联想台式机网卡驱动,手把手教你联想台式机网卡驱动
  8. 纪念盘古工坊开发的一款手机游戏正式发布
  9. Yoshua Bengio:注意力是“有意识”AI的核心要素
  10. Windows命令:tracert
  11. 计算机专业排名2017教育部,软件工程专业大学排名最新版(教育部2017学科排名数据整理)...
  12. 微型计算机的主机常用部件,组成微型机主机的部件是
  13. docker启动redis指定redis.conf参数
  14. Spring 青鸟云题库
  15. sklearn机器学习(五)线性回归算法测算房价
  16. vue打包上线的代理问题
  17. CSS top、margin-top和padding-top的区别
  18. java有关的论述_中国大学MOOC: 以下有关JAVA线程的论述,正确的是()。
  19. Xutils中网络请求
  20. 艺赛旗(RPA)Python:遍历输出某路径下的所有文件和文件夹

热门文章

  1. 模糊PID——基于MATLAB的直流电机控制系统
  2. 核心交换机基于接口的DHCP服务
  3. shell 脚本学习笔记
  4. 模型解释 -- Guided-Backpropagation、CAM、Grad-CAM、Grad-CAM++ 及 pyTorch Hook
  5. 实战源码,PP-LiteSeg集速度快、精度高、易部署等为一体,行业应用实战必备
  6. 数学纠错本html模板,小学数学错题纠错本(打印版).docx
  7. Android图片下载缓存库picasso解析
  8. windows安装MyBatis Migrations
  9. thinkpad win10 莫名卡死的可能原因
  10. Vscode开发Qt