PHP常用的三种设计模式

 更新时间:2017年02月17日 11:19:02   作者:范特西的麦田  
本文为大家介绍常用的三种php设计模式:单例模式、工厂模式、观察者模式,具有很好的参考价值,下面跟着小编一起来看下吧

一、首先来看,单例模式

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

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

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

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

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

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

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

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

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

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

1.只能有一个实例。

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

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

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

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

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

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

相关文章

  • Ajax+PHP 边学边练 之二 实例

    Ajax+PHP 边学边练 之二 实例

    本篇通过一个实例介绍Ajax与PHP结合使用的方式,可以下载该实例的源程序以便更好理解。压缩包中functions.js就是Ajax核心代码了,所有的操作效果都是通过它来实现的。下文的代码解释都是提取自functions.js。
    2009-11-11
  • 自定义php类(查找/修改)xml文档

    自定义php类(查找/修改)xml文档

    看了下PHP操作xml文档,学了点儿 DOMDocument 类,接下来为大家介绍自己写个类,实现了查找 xml 节点,并修改节点值,感兴趣的各位可以参考下
    2013-03-03
  • 详细解读PHP中接口的应用

    详细解读PHP中接口的应用

    这篇文章主要介绍了PHP中接口的应用,是PHP入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • php实现的网络相册图片防盗链完美破解方法

    php实现的网络相册图片防盗链完美破解方法

    这篇文章主要介绍了php实现的网络相册图片防盗链完美破解方法,可实现针对设置了防盗链网络相册图片的抓取功能,非常具有实用价值,需要的朋友可以参考下
    2015-07-07
  • 解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)

    解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)

    本篇文章是对解决PHP mysql_query执行超时(Fatal error: Maximum execution time of 300 seconds exceeded in…)的问题进行了详细的分析介绍,需要的朋友参考下
    2013-07-07
  • header与缓冲区之间的深层次分析

    header与缓冲区之间的深层次分析

    实际的开发中,大家是否听说过在header之前不能有任何的实际输出。甚至有的认为header函数必须写在代码的最前面。可是你是否试验过header函数之前输出东西?下来让我们更深层次的了解一下
    2016-07-07
  • PHP调用Linux命令权限不足问题解决方法

    PHP调用Linux命令权限不足问题解决方法

    这篇文章主要介绍了PHP调用Linux命令权限不足问题解决方法,本文是解决项目问题总结而来,通过修改sudo配置文件解决无权限执行命令问题,需要的朋友可以参考下
    2015-02-02
  • PHP也能干大事之PHP中的编码解码详解

    PHP也能干大事之PHP中的编码解码详解

    这篇文章主要介绍了PHP也能干大事之PHP中的编码解码详解,本文讲解了ASCII编解码、URL编解码、Base64编解码、HTML实体编解码、二进制、八进制、十进制、十六进制相互转换等内容,需要的朋友可以参考下
    2015-04-04
  • PHP实现提取多维数组指定一列的方法总结

    PHP实现提取多维数组指定一列的方法总结

    这篇文章主要介绍了PHP实现提取多维数组指定一列的方法,结合实例形式总结分析了PHP针对多维数组的遍历、转换、提取等相关操作技巧,需要的朋友可以参考下
    2019-12-12
  • 浅谈apache和nginx的rewrite的区别

    浅谈apache和nginx的rewrite的区别

    浅谈apache和nginx的rewrite的区别,需要的朋友可以参考一下
    2013-02-02

最新评论