php注册树模式,php设计模式-注册树模式
注册树模式概念
注册树模式也叫注册模式或注册器模式。注册树模式将对象实例注册到一棵全局的对象树上,需要的时候从对象树上获取即可。
注册树模式优点
单例模式创建唯一对象的过程本身还有一种判断,即判断对象是否存在,存在则返回对象,不存在则创建对象并返回。 工厂模式更多考虑的是扩展维护的问题。 总的来说,单例模式和工厂模式可以产生更加合理的对象。怎么方便调用这些对象呢?注册树模式是一种不错的选择。不管是通过单例模式还是工厂模式还是二者结合生成的对象,都统统给我插入到注册树上,用某个对象的时候,直接从注册树上获取即可。
注册树模式实例
假如已经存在类Database;<?php
class Register
{
protected static $objects;
static function set($alias, $object)
{
self::$objects[$alias] = $object;
}
static function get($key)
{
if (!isset(self::$objects[$key]))
{
return false;
}
return self::$objects[$key];
}
function _unset($alias)
{
unset(self::$objects[$alias]);
}
}
class Factory{
static function createDatabase(){
$db = new Database();
//插入到注册树
Register::set('db1', $db);
}
}
//从注册树里获取
$db = Register::get('db1');
php注册树模式,php设计模式-注册树模式相关推荐
- 工厂模式 java_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
- java web简单工厂模式_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
- python的out模式_Python设计模式之状态模式
状态模式 面向对象编程着力于在对象交互时改变它们的状态.在很多问题中,有限状态机(通常名为状态机)是一个非常方便的状态转换建模(并在必要时以数学方式形式化)工具.首先,什么是状态机?状态机是一个抽象机 ...
- 建造者模式java_java设计模式3——建造者模式
java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...
- python的编程模式-Python设计模式之状态模式原理与用法详解
本文实例讲述了Python设计模式之状态模式原理与用法.分享给大家供大家参考,具体如下: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 ...
- python工厂模式 django_python设计模式-工厂方法模式
题目:假设你有一个 pizza 店,功能包括下订单.做 pizza,你的代码会如何写呢? def order_pizza(): pizza = Pizza() pizza.prepare() pizz ...
- Java创新型模式_java设计模式--创建型模式(一)
2016-04-24 10:10:34 创建型模式:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式 注意:工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂 ...
- python 命令模式_python 设计模式之命令模式
命令模式介绍: 在面向对象编程中,命令模式是概括所有方法信息的设计模式. 此模式对象包涵方法名,及其相关参数值. 命令模式是一个分类的观察者设计模式,在命令模式下,对象被概括为一个命令表单,此表单包涵 ...
- java之备忘录模式,java设计模式之备忘录模式
java设计模式之备忘录模式 代码无错便是优? 简介: 在不破坏封装性的前提下 , 捕获一个对象的内部状态,并在该对象之外保存这个状态 , 这样以后就可以将该对象恢复到原先保存的状态 . 备忘录模式就 ...
最新文章
- Firefox火狐广告过滤插件Adblock Plus过滤规则包[中文维护小组]
- Python入门学习笔记11(静态方法、类方法与属性方法)
- Oracle回收站解决误删除表
- 聊聊 rel=noopener
- python数据分析之(3)pandas
- 3D控件Aspose.3D 8月新版V17.8发布 | 支持6面多维地图
- excel文件修复工具_psd文件修复工具下载|Recovery Toolbox for ps 最新版v2.3.1.0 下载
- 2021DASCTF实战精英夏令营暨DASCTF July X CBCTF 4th -- WP [pwn]
- 富士康计划豪掷4000万美元投资美国制造业
- 概率论中常见分布的数学期望、方差及特征函数推导 (一)离散型随机变量
- app开发已经过时了?app开发行业分析
- 《让时间陪你慢慢变富》有感
- Kubernetes(k8s)之Service(服务)
- Linux上类似vbs脚本,VBS脚本常用经典代码收集
- som神经网络聚类简单例子_深度聚类的可视化解释
- CORDIC算法计算复数相位角(含verilog源码)
- 谈谈在我在外包公司工作的经历,悲催的我,还失去了我心爱的猴子
- 博士毕业应不应该创业?
- 英雄埋骨无人问,戏子家事天下知!
- 倩女幽魂显示服务器繁忙,倩女幽魂手游新服首开服务器爆满,万人排队逼疯玩家...
热门文章
- windows打开的winform当前焦点 是否是hwnd_推介几款 windows 下非常好用的工具
- python交叉验证函数_python – 在sklearn中使用交叉验证和AUC-ROC作为逻辑回归模型...
- java父包引用_父类引用指向子类对象(java)
- halcon 将数据保存到excel_pandas筛选、合并、批量保存excel数据
- k折交叉验证法python实现_Jason Brownlee专栏| 如何解决不平衡分类的k折交叉验证-不平衡分类系列教程(十)...
- TensorFlow 多任务学习
- 用S-函数编写Simulink中的正弦模块
- 模拟Struts2实现
- 创建型、结构型、行为型模式(2)
- Swagger 注解~用于模型