PHP常用的三种设计模式


Posted in PHP onFebruary 17, 2017

一、首先来看,单例模式

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

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

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

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

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

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

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

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

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

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

1.只能有一个实例。

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

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

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

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

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

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

PHP 相关文章推荐
PHP 高级课程笔记 面向对象
Jun 21 PHP
php中$this->含义分析
Nov 29 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
php使用websocket示例详解
Mar 12 PHP
php获取CSS文件中图片地址并下载到本地的方法
Dec 02 PHP
标准PHP的AES加密算法类
Mar 12 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
May 12 PHP
提交表单后 PHP获取提交内容的实现方法
May 25 PHP
PHP入门教程之操作符与控制结构流程详解
Sep 09 PHP
thinkphp分页集成实例
Jul 24 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 PHP
PHP实现页面静态化深入讲解
Mar 04 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
我的论坛源代码(九)
2006/10/09 PHP
php中用文本文件做数据库的实现方法
2008/03/27 PHP
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
jQuery获取元素父节点的方法
2016/06/21 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
Python 错误和异常小结
2013/10/09 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
如何唤起类中的一个方法
2013/11/29 面试题
资产经营总监岗位职责范文
2013/12/01 职场文书
迎新晚会主持词
2014/03/24 职场文书
企业法人代表证明书
2014/09/27 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
论文评审意见
2015/06/05 职场文书
给校长的建议书范文
2015/09/14 职场文书
超市主管竞聘书
2015/09/15 职场文书
python实现简单倒计时功能
2021/04/21 Python
golang使用map实现去除重复数组
2022/04/14 Golang