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 相关文章推荐
php4的彩蛋
Oct 09 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
使用NetBeans + Xdebug调试PHP程序的方法
Apr 12 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
Jun 03 PHP
php的数组与字符串的转换函数整理汇总
Jul 18 PHP
CodeIgniter框架URL路由总结
Sep 03 PHP
THINKPHP2.0到3.0有哪些改进之处
Jan 04 PHP
php检查页面是否被百度收录
Oct 28 PHP
PHP实现的方程求解示例分析
Nov 11 PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 PHP
php实现简单的权限管理的示例代码
Aug 25 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
Apr 06 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
php一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
跟老齐学Python之用while来循环
2014/10/02 Python
python通过文件头判断文件类型
2015/10/30 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
使用python模拟命令行终端的示例
2019/08/13 Python
python SocketServer源码深入解读
2019/09/17 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
100%羊绒:NakedCashmere
2020/08/26 全球购物
新闻编辑自荐信
2013/11/03 职场文书
销售经理岗位职责
2015/01/31 职场文书
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏