PHP常用的三种设计模式


Posted in PHP onFebruary 17, 2017

一、首先来看,单例模式

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

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

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

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

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

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

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

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

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

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

1.只能有一个实例。

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

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

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

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

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

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

PHP 相关文章推荐
ftp类(myftp.php)
Oct 09 PHP
PHP中将网页导出为Word文档的代码
May 25 PHP
PHP抓屏函数实现屏幕快照代码分享
Jan 02 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
Mar 17 PHP
提交表单后 PHP获取提交内容的实现方法
May 25 PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 PHP
php自定义时间转换函数示例
Dec 07 PHP
基于php实现的验证码小程序
Dec 13 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
PHP学习笔记之session
May 06 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
javascript操作表格排序实例分析
2015/05/06 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
Vue.js组件通信的几种姿势
2017/10/23 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
python数字图像处理之高级形态学处理
2018/04/27 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
简单介绍django提供的加密算法
2019/12/18 Python
如何基于线程池提升request模块效率
2020/04/18 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
毕业生自荐书
2013/12/18 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
领导干部整治奢华浪费之风思想汇报
2014/10/07 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
2016年十一促销广告语
2016/01/28 职场文书