PHP常用的三种设计模式


Posted in PHP onFebruary 17, 2017

一、首先来看,单例模式

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

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

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

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

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

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

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

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

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

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

1.只能有一个实例。

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

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

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

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

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

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

PHP 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
在PHP里得到前天和昨天的日期的代码
Aug 16 PHP
php smarty 二级分类代码和模版循环例子
Jun 16 PHP
基于wordpress主题制作的具体实现步骤
May 10 PHP
php抓取页面的几种方法详解
Jun 17 PHP
解析php file_exists无效的解决办法
Jun 26 PHP
PHP使用静态方法的几个注意事项
Sep 16 PHP
64位windows系统下安装Memcache缓存
Dec 06 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 PHP
PHP的PDO大对象(LOBs)
Jan 27 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
Apache服务器无法使用的解决方法
2013/05/08 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
IE 下的只读 innerHTML
2009/08/21 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
Python Web程序搭建简单的Web服务器
2019/07/31 Python
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
初任培训自我鉴定
2013/10/07 职场文书
简历中自我评价范文3则
2013/12/14 职场文书
简历的自荐信
2013/12/19 职场文书
应届大学生简历中的自我评价
2014/01/15 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL