PHP常用的三种设计模式


Posted in PHP onFebruary 17, 2017

一、首先来看,单例模式

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

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

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

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

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

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

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

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

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

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

1.只能有一个实例。

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

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

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

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

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

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

PHP 相关文章推荐
针对初学PHP者的疑难问答(1)
Oct 09 PHP
关于mysql 字段的那个点为是定界符
Jan 15 PHP
PHP strtr() 函数使用说明
Nov 21 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
Sep 07 PHP
基于php权限分配的实现代码
Apr 28 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
php通过获取头信息判断图片类型的方法
Jun 26 PHP
学习php设计模式 php实现原型模式(prototype)
Dec 07 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
PHP进阶学习之垃圾回收机制详解
Jun 18 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提取中文首字母
2008/04/09 PHP
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
php微信支付之APP支付方法
2015/03/04 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
js 表单验证方法(实用)
2009/04/28 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
python获取本地计算机名字的方法
2015/04/29 Python
Python 自动化表单提交实例代码
2017/06/08 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
python使用tornado实现简单爬虫
2018/07/28 Python
python3实现名片管理系统
2020/11/29 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
django的ORM操作 增加和查询
2019/07/26 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
JSF的标签库有哪些
2012/04/27 面试题
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
村官学习十八大感想
2014/01/15 职场文书
展会邀请函范文
2014/01/26 职场文书
合作经营协议书
2014/04/17 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
Python序列化模块JSON与Pickle
2022/06/05 Python