php的单例模式及应用场景详解


Posted in PHP onFebruary 27, 2021

单例模式(Singleton)也叫单态模式,是设计模式中最为简单的一种模式,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象,也因此有些设计大师并把把其称为设计模式之一。

这里又不具体讲如何实现单例模式和介绍其原理(因为这方便的已经有太多的好文章介绍了)

好多没怎么使用过的人可能会想,单例模式感觉不怎么用到,实际的应用场景有哪些呢?以下,我将列出一些就在咱们周边和很有意义的单例应用场景。

  1. Windows的Task Manager(任务管理器)就是很典型的单例模式(这个很熟悉吧),想想看,是不是呢,你能打开两个windows task manager吗? 不信你自己试试看哦~
  2. windows的Recycle Bin(回收站)也是典型的单例应用。在整个系统运行过程中,回收站一直维护着仅有的一个实例。
  3. 网站的计数器,一般也是采用单例模式实现,否则难以同步。
  4. 应用程序的日志应用,一般都何用单例模式实现,这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。
  5. Web应用的配置对象的读取,一般也应用单例模式,这个是由于配置文件是共享的资源。
  6. 数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源。数据库软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的,因为何用单例模式来维护,就可以大大降低这种损耗。
  7. 多线程的线程池的设计一般也是采用单例模式,这是由于线程池要方便对池中的线程进行控制。
  8. 操作系统的文件系统,也是大的单例模式实现的具体例子,一个操作系统只能有一个文件系统。
  9. HttpApplication 也是单位例的典型应用。熟悉http://ASP.Net(IIS)的整个请求生命周期的人应该知道HttpApplication也是单例模式,所有的HttpModule都共享一个HttpApplication实例.

总结以上,不难看出:

单例模式应用的场景一般发现在以下条件下:

(1)资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如上述中的日志文件,应用配置。

(2)控制资源的情况下,方便资源之间的互相通信。如线程池等。

到此这篇关于php的单例模式及应用场景详解的文章就介绍到这了,更多相关php单例模式及应用场景内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
vBulletin Forum 2.3.xx SQL Injection
Oct 09 PHP
使用php+xslt在windows平台上
Oct 09 PHP
PHP 和 MySQL 开发的 8 个技巧
Jan 02 PHP
php 高性能书写
Dec 11 PHP
php 代码优化之经典示例
Mar 24 PHP
php中取得文件的后缀名?
Feb 20 PHP
php实现发送微信模板消息的方法
Mar 07 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
php实现微信原生支付(扫码支付)功能
May 30 PHP
php高清晰度无损图片压缩功能的实现代码
Dec 09 PHP
PHP实现微信小程序用户授权的工具类示例
Mar 05 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 #PHP
PHP并发场景的三种解决方案代码实例
Feb 27 #PHP
常见的5个PHP编码小陋习以及优化实例讲解
Feb 27 #PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 #PHP
PHP的垃圾回收机制代码实例讲解
Feb 27 #PHP
php命令行模式代码实例详解
Feb 26 #PHP
PHP时间类完整代码实例
Feb 26 #PHP
You might like
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
PHP数据流应用的一个简单实例
2012/09/14 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
javascript 文档的编码问题解决
2009/03/01 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
微信小程序 wx.request方法的异步封装实例详解
2017/05/18 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
Puppet的一些技巧
2018/09/17 Javascript
Vue搭建后台系统需要注意的问题
2019/11/08 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
pytyon 带有重复的全排列
2013/08/13 Python
用Python编写简单的定时器的方法
2015/05/02 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
python使用smtplib模块发送邮件
2020/12/17 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
全球虚拟主机商:HostGator
2017/02/06 全球购物
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
美国翻新电子产品商店:The Store
2019/10/08 全球购物
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
质量月活动策划方案
2014/03/10 职场文书
公司离职证明标准样本
2014/10/05 职场文书
预备党员转正材料
2014/12/19 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书