PHP常用的三种设计模式


Posted in PHP onFebruary 17, 2017

一、首先来看,单例模式

所谓单例模式,即在应用程序中只会有这个类的一个实例存在。

通常单例模式用在仅允许数据库访问对象的实例中,从而防止打开多个数据库连接。

一个单例类应包括以下几点:

和普通类不同,单例类不能被直接实例化,只能是由自身实例化。因此,要获得这样的限制效果,构造函数必须标记为private。

要让单例类不被直接实例化而能起到作用,就必须为其提供这样的一个实例。因此,就必须要让单例类拥有一个能保存类的实例的私有静态成员变量和对应的一个能访问到实例的公共静态方法。

在PHP中,为防止对单例类对象的克隆来打破单例类的上述实现形式,通常还为基提供一个空的私有__clone()方法。

单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

单例模式是一种常见的设计模式,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动程序常被设计成单例。

单例模式分3种:懒汉式单例、饿汉式单例、登记式单例。

单例模式有以下3个特点:

1.只能有一个实例。

2.必须自行创建这个实例。

3.必须给其他对象提供这一实例。

那么为什么要使用PHP单例模式?

PHP一个主要应用场合就是应用程序与数据库打交道的场景,在一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。因为每一次new操作都会消耗系统和内存的资源。

在以往的项目开发中,没使用单例模式前的情况如下:未完....

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
粗略计算在线时间,bug:ip相同
Dec 09 PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
Jan 30 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
Feb 18 PHP
深入PHP中慎用双等于(==)的详解
Jun 06 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
浅谈php中include文件变量作用域
Jun 18 PHP
php实现统计目录文件大小的函数
Dec 25 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
form表单传递数组数据、php脚本接收的实例
Feb 09 PHP
PHP单例模式数据库连接类与页面静态化实现方法
Mar 20 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 PHP
轻松实现php文件上传功能
Feb 17 #PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
Feb 17 #PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
Feb 17 #PHP
php使用parse_str实现查询字符串解析到变量中的方法
Feb 17 #PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 #PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
Feb 17 #PHP
PHP中单例模式与工厂模式详解
Feb 17 #PHP
You might like
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
两个SUBMIT按钮,如何区分处理
2006/08/22 Javascript
JS动画效果代码3
2008/04/03 Javascript
javascript 框架小结 个人工作经验
2009/06/13 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
jquery合并表格中相同文本的相邻单元格
2015/07/17 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
Python帮你识破双11的套路
2019/11/11 Python
django使用xadmin的全局配置详解
2019/11/15 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
Python ini文件常用操作方法解析
2020/04/26 Python
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
高一学生期末评语
2014/04/25 职场文书
申报优秀教师材料
2014/12/16 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书