PHP常用的三种设计模式


Posted in PHP onFebruary 17, 2017

一、首先来看,单例模式

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

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

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

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

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

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

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

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

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

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

1.只能有一个实例。

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

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

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

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

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

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

PHP 相关文章推荐
php URL编码解码函数代码
Mar 10 PHP
Ajax+PHP 边学边练之四 表单
Nov 27 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
php生成excel文件的简单方法
Feb 08 PHP
PHP实现的下载远程图片自定义函数分享
Jan 28 PHP
列举PHP的Yii 2框架的开发优势
Jul 03 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
thinkphp框架下404页面设置 仅三步
May 14 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 PHP
PHP7 echo和print语句实例用法
Feb 15 PHP
php定期拉取数据对比方法实例
Sep 22 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
用PHP调用Oracle存储过程的方法
2008/09/12 PHP
10条PHP编程习惯助你找工作
2008/09/29 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
ucenter通信原理分析
2015/01/09 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
django模板结构优化的方法
2019/02/28 Python
python列表推导式操作解析
2019/11/26 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
密封类可以有虚函数吗
2014/08/11 面试题
酒店销售主管岗位职责
2014/01/04 职场文书
24岁生日感言
2014/01/13 职场文书
索桥的故事教学反思
2014/02/06 职场文书
师德演讲稿范文
2014/05/06 职场文书
教师演讲稿大全
2014/05/16 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
导游词之吉林花园山
2019/10/17 职场文书