PHP中单例模式与工厂模式详解


Posted in PHP onFebruary 17, 2017

单例模式概念

单例模式是指整个应用中类只有一个对象实例的设计模式。

单例模式的特点

一个类在整个应用中只有一个实例

类必须自行创建这个实例

必须自行向整个系统提供这个实例

php中使用单例模式的原因

我用php大部分操作都是和各种数据库打交道,包括mysql,redis,memcache等各种关系型和非关系型数据库,所以一个应用中会 存在大量连接数据库的操作,如果不用单例模式,那每次都要new操作,但是每次new都会消耗大量的内存资源和系统资源,而且每次打开和关闭数据库连接都 是对数据库的一种极大考验和浪费。

需要一个保存类的唯一实例的静态成员变量(通常$instance为私有变量)

构造函数和克隆函数必须声明为私有的,为了防止外部程序new类从而失去单例模式意义

必须提供一个访问这个实例的公共静态方法,从而返回唯一实例的一个引用

//设计模式
//单例模式 都是使用同一个对象
//class Ren
//{
// public $name;
// private static $dx; //存储对象
//
// private function __construct()
// {
//
// }
//
// public static function DuiXiang()
// {
//  if(empty(self::$dx))
//  {
//   self:;$dx=new Ren();
//  }
//  return self::$dx;
// }
//}
//
//$r= Ren::DuiXiang();
//把构造函数变为私有
//做了一个方法来间接造对象
//在该方法里面加限制

工厂类

是指包含一个专门用来创建其他对象的方法的类,工厂类在多态性编程实践中是至关重要的,它允许动态的替换类,修改配置,通常会使应用程序更加灵活,熟练掌握工厂模式高级PHP开发人员是很重要的。

工厂模式通常用来返回符合类似接口的不同的类,工厂的一种常见用法就是创建多态的提供者,从而允许我们基于应用程序逻辑或者配置设置来决定应实例化哪一个类,例如,可以使用这样的提供者来扩展一个类,而不需要重构应用程序的其他部分,从而使用新的扩展后的名称 。

通常,工厂模式有一个关键的构造,根据一般原则命名为Factory的静态方法,然而这只是一种原则,工厂方法可以任意命名,这个静态还可以接受任意数据的参数,必须返回一个对象。

class YunSuan
{
 public $a;
 public $b;
 function Suan()
 {
  echo "对两个数进行运算";
 }
class gongchang
{ //功能 : 给一个参数,返回一个对象
 static function chanpin($name)
 {
  switch($name)
  {
   case "'+":
    return new jia();
    break;
   case "-";
    return new jian();
    break;
  }
 }
}
$a=gongchang::chanpin("+");

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

PHP 相关文章推荐
实用函数10
Nov 08 PHP
php读取30天之内的根据算法排序的代码
Apr 06 PHP
php 计划任务 检测用户连接状态
Mar 29 PHP
php定时计划任务与fsockopen持续进程实例
May 23 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
PHP实现获取某个月份周次信息的方法
Aug 11 PHP
PHP+ajax分页实例简析
Dec 07 PHP
CodeIgniter扩展核心类实例详解
Jan 20 PHP
PHP线程的内存回收问题
Jul 08 PHP
PHP调用Mailgun发送邮件的方法
May 04 PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 PHP
PHP7 新增功能
Mar 09 PHP
PHP封装返回Ajax字符串和JSON数组的方法
Feb 17 #PHP
PHP合并数组函数array_merge用法分析
Feb 17 #PHP
yii2利用自带UploadedFile实现上传图片的示例
Feb 16 #PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 #PHP
php UNIX时间戳用法详解
Feb 16 #PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 #PHP
php实现文件与16进制相互转换的方法示例
Feb 16 #PHP
You might like
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
JavaScript中的数据类型转换方法小结
2015/10/26 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
django框架forms组件用法实例详解
2019/12/10 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
税务会计岗位职责
2014/02/18 职场文书
寄语是什么意思
2014/04/10 职场文书
勤俭节约倡议书
2014/04/14 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
消防志愿者活动方案
2014/08/23 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
医院见习报告范文
2014/11/03 职场文书
热血教师观后感
2015/06/10 职场文书
初中军训感言
2015/08/01 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP