PHP常用的三种设计模式


Posted in PHP onFebruary 17, 2017

一、首先来看,单例模式

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

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

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

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

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

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

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

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

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

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

1.只能有一个实例。

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

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

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

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

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

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

PHP 相关文章推荐
一个简单的自动发送邮件系统(三)
Oct 09 PHP
file_get_contents("php://input", "r")实例介绍
Jul 01 PHP
PHP cdata 处理(详细介绍)
Jul 05 PHP
php预定义变量使用帮助(带实例)
Oct 30 PHP
PHP 前加at符合@的作用解析
Jul 31 PHP
PHP使用new StdClass()创建空对象的方法分析
Jun 06 PHP
PHP面向对象之事务脚本模式(详解)
Jun 07 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
php 处理png图片白色背景色改为透明色的实例代码
Dec 10 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
Oct 17 PHP
PHP获取学生成绩的方法
Nov 17 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使用GeoIP库实例
2014/06/27 PHP
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
JavaScript错误处理
2015/02/03 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python正则实现计算器功能
2017/12/14 Python
django+mysql的使用示例
2018/11/23 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
python实现微信防撤回神器
2019/04/29 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
Python实现自动装机功能案例分析
2020/10/22 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
2014年母亲节寄语
2014/05/07 职场文书
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
从事会计工作年限证明
2015/06/23 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
如何做好员工培训计划?
2019/07/09 职场文书
Nginx配置https的实现
2021/11/27 Servers