php53 php55区别,详解 PHP 中的三大经典模式

原文:https://www.cnblogs.com/heyue0117/p/11869676.html

单例模式

单例模式的含义:

作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。

单例模式的三个要素:

1. 保存类唯一实例的静态变量。

2. 构造函数和克隆函数必须是私有的,放在外部去实例化,这样就不存在单例模式的意义。

3. 提供一个可供外部访问的公共静态方法,这个方法返回该类的唯一实例。

单例模式的意义:

在 PHP 中的应用主要在于数据库应用, 所以一个应用中会存在大量的数据库操作, 在使用面向对象的方式开发时, 如果使用单例模式, 则可以避免大量的 new 操作消耗的资源。而不完全是对系统资源的节省, 可以避免重复实例化,因为 PHP 每次实例化一个类之后都会清理掉对应的资源,当再次使用的时候又会在重新去实例化一次。

单例模式使用的场景:

1. 数据库操作,减少对数据路的 new 操作,从而减少内存资源和系统资源的消耗。

2. 配置资源的共享,在一个系统中,配置资源都是全局的,使用单例模式也可以减少每次去读取配置带来的内存和系统资源的消耗。

代码演示:

单例模式和非单例模式的区别:

工厂模式

工厂模式的有含义:

负责生成其他对象的方法。简单的描述就是通过一个工厂类,去实例化其他类或者方法。

工厂模式的意义:

通过使用工厂模式,减少因为多处 new 同一个类,当这个类发生变法时,则需要多处修改。

代码演示:

注册树模式

注册数的含义:

注册树就是将多个对象注册在一个对象池中,当我们需要使用时,直接从对象池获取即可。

注册数模式的优点:

单例模式解决的是如何在整个项目中创建唯一对象实例的问题,工厂模式解决的是如何不通过 new 建立实例对象的方法。

那么注册树模式想解决什么问题呢? 在考虑这个问题前,我们还是有必要考虑下前两种模式目前面临的局限。

首先,单例模式创建唯一对象的过程本身还有一种判断,即判断对象是否存在。存在则返回对象,不存在则创建对象并返回。

每次创建实例对象都要存在这么一层判断。

工厂模式更多考虑的是扩展维护的问题。

总的来说,单例模式和工厂模式可以产生更加合理的对象。怎么方便调用这些对象呢?

而且在项目内如此建立的对象好像散兵游勇一样,不便统筹管理安排啊。因 而,注册树模式应运而生。

不管你是通过单例模式还是工厂模式还是二者结合生成的对象,都统统给我 “插到” 注册树上。我用某个对象的时候,直接从注册树上取 一下就好。

这和我们使用全局变量一样的方便实用。 而且注册树模式还为其他模式提供了一种非常好的想法。

代码演示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javafx中的tree_JavaFX中的塔防(3)

javafx中的tree在最后一部分中,您了解了如何创建Sprite,为其设置动画并赋予其Behavior。 但是动画效果不是很好,因为作为Insectoid,您应该总是在飞行的地方看。 记住:安全第一! 我们可以通过创建自定义的Ti…

ie浏览器升级_IE 被微软专家从浏览器里除名了,专家说它只是个兼容性解决方案...

随着 Chrome 等第三方浏览器的崛起,以及微软 Edge 浏览器的替代,家喻户晓的 IE 浏览器正在走向边缘化。2016 年,IE 浏览器的市场份额下跌了 55%。随之而来着来的还有用户的种种恶搞,IE 的反应慢、易崩溃都成了读者制图时讽刺的目标…

谱修正 matlab,自适应谱修正LU分解法解算高病态法方程

自适应谱修正LU分解法解算高病态法方程谱修正迭代算法及其改正算法均没有很好地解决收敛速度与降低矩阵病态性之间的矛盾,且改进算法的阻尼因子缺乏有效的确定方法。针对该问题,提出自适应谱修正(本文共5页)阅读全文>>随着固体激光向高能量和超短脉冲方向快速发展,其对高…

dos命令行设置网络优先级_替代windows系统下cmd的10款命令行工具

喜欢用linux系统的或者从事开发编程的朋友可能会经常用到命令行工具,下面会整理一些windows下命令行工具。1.powershell系统自带powershell它可以说cmd的升级版、补充版,PowerShell需要.NET环境的支持,借助.NET Framework平台强大的类库&…

Spring Cloud Gateway –配置简单路由

可以将Spring Cloud Gateway视为Spring Cloud Netflix Zuul项目的后续产品,并有助于在微服务环境中实现Gateway模式 。 它建立在 Spring Boot 2和Spring Webflux端到端都是无阻塞的-它公开了一个基于Netty的服务器,使用基于Netty的客户端进行下游微服务…

win7台式电脑怎么连wifi_台式电脑怎么用wifi网络

现在很多朋友的手机使用的都是wif网络,既然手机可以用wifi,那么电脑怎么用wifi呢,其实电脑用wifi的方法也有很多种,为了大家通俗易懂,先来说一种简单的方法吧!台式电脑怎么用wifi网络1、首先必须要有一个无…

敏感词库php数组,PHP 实现敏感词 / 停止词 过滤(附敏感词库),敏感类词语大全...

PHP 实现敏感词 / 停止词 过滤(附敏感词库)PHP实现了敏感词/停用词过滤(带敏感词库),过滤敏感单词和字符是网站,的一项基本功能,因此有必要设计一个好的、高效的过滤算法。在敏感词过滤算法中,必须减少计算量,而DFA算法…

分子动力学模拟软件_功能玻璃专题——分子动力学模拟预测氧化钠含量对二元钠硅酸盐玻璃弹性模量的影响...

赵 谦 1,祖 群 1,齐 亮 2,胡永杰 2,孙雪坤3,陈 阳 1(1. 中材科技股份有限公司,中国南京 210012;2. 美国密歇根大学,美国密歇根州安娜堡 48109-236; 3. 美国大陆地科技…

javafx中的tree_JavaFX中的塔防(2)

javafx中的tree在最后一部分,我们创建了一个简单的编辑器,让我们放置炮塔。 现在,我们将在敌人起源处添加一个生成点,并为其定义攻击目标。 首先,我将通过对象层向地图添加更多信息。 这是标准的TMX,因此我…

oracle全角字符转半角,Oracle 表字段全角字符轉換半角字符辦法

在Oralce的某一個表中,一個地址字段包含了全角的字符,需要轉換為半角字符,以便進一步處理。表名:a包含全角字符的字段:address編輯表結構,添加一列:address2在PLSQL中,新建SQL窗口&a…

fanuc机器人与视觉通信_要说工厂干起活来:工业机器人和数控机床才是真正的一对!...

我们常说团结就是力量,只有相互配合,才能把工作做得更加完美。这不仅仅适用于人类。工业机器人和数控机床也是一样的,也是需要相互配合才能做好工作,提高工厂的生产效率。所以今天要学习的是工业机器人和数控机床是怎么配合工作的…

在Microsoft Azure上运行Eclipse MicroProfile

在本文中,我将通过展示如何在Microsoft Azure Web Apps for Containers中执行操作来跟踪有关在Oracle Cloud中运行Eclipse MicroProfile应用程序的系列文章。 我正在使用与以前的帖子相同的简单应用程序CloudEE Duke 。 唯一的区别是,我现在将应用程序打…

php ajax 更改状态,phpajax实现无刷新获取天气状态_PHP教程

首先我们要明白一点我们自己是无法来做天气预报这种功能的,这里我们只要调用api接口返回的数据就可以了,下面是以中国天气网的api接口调用实例我们一起来学习。天气已经成为生活中不可缺少的话题,与我们的生活有着密切的关系,我博…

注入dll到explorer.exe中无反应_MBR膜生物反应器的安装及技术要求都有什么呢?

MBR膜生物反应器在安装的时候,其中是有着事项值得我们注意的,那么MBR膜生物反应器的安装及技术要求主要是什么呢?下面一起来了解下吧。1.MBR膜生物反应器管道安装连接应该在设备就位时考虑好,罐体就位时必须按设备自重&#xff0c…

什么是互联网大厂_2020阿里、腾讯、字节跳动等14家互联网大厂薪资水平大汇总...

联网大厂已经成为求职者的“必争之地”。无论是从薪资待遇、发展机会,还是从平台资源、技术实力来看,互联网大厂都是不错的选择。当然,不同的企业薪资水平还是存在一定的差距,对应的要求也会有所不同。今天,我们再来看…

解神者php奥义高阶,《解神者》角色月曦九攻略技能解析和兽主推荐

解神者已经有一段时间了,很多新玩家对角色还不太了解,今天就给新手玩家解析一下月曦九角色的技能攻略和兽主推荐。月曦九也是解神者所有角色里伤害很高的角色之一。月曦九的神权一技能,此技能共有两段伤害,在第一段位移和伤害释放…

jax-rs jax-ws_使用JAX-RS的HTTP缓存

jax-rs jax-ws在上一个博客中,我们讨论了不同类型的缓存及其用例。 在本文中,我们将探讨如何利用HTTP响应标头和JAX-RS提供的支持来利用缓存。 过期标题 在HTTP 1.0中,一个名为Expires的简单响应头将告诉浏览器它可以缓存对象或页面多长时间…

php常驻对象,php对象

linux中用户的主目录~-在Linux中代表用户主目录 对一般用户,-表示/home/(用户名) 对于root用户,-表示/root 如果要查看-的真实面貌,可以先进入-目录,然后用pwd -P命令查看-的绝对路径 cd ~ ...SQL2005语句实现行转列,列转行在做报表时,经常需要将数据表中…

无穷级数求和7个公式_大家看,用反证法判别级数敛散性(送微积分同学)!...

反证法证明级数发散题目、 判断级数 的收敛性。解: 反设收敛。则收敛。所以收敛, 所以收敛, 它为正项级数,但是通过比较分子分母次数得到因为发散, 所以发散,矛盾。所以原级数发散。注记: 教材中…

用户身份验证最佳做法清单

用户身份验证是每个Web应用程序共享的功能。 我们已经实现了很多次,所以很早以前就应该完善它。 然而,错误无时无刻不在发生。 造成这种情况的部分原因是,可能出问题的清单很长。 您可能会错误地存储密码,可能会具有脆弱的密码重…