php设计模式之单例、多例设计模式的应用分析

 更新时间:2013年06月30日 12:37:04   作者:   我要评论
本篇文章是对php设计模式中的单例与多例设计模式的应用进行了详细的分析介绍,需要的朋友参考下
单例(Singleton)模式和不常见的多例(Multiton)模式控制着应用程序中类的数量。如模式名称,单例只能实例化一次,只有一个对象,多例模式可以多次实例化。

基于Singleton的特性,我们经常用Singleton配置应用程序并定义应用程序中可能随时访问的变量。但有时并不推荐使用Singleton,因为它生成了一个全局状态且

该单一根对象没有封装任何系统功能。多数情况下,会使单元测试和调试变得困难。读者根据情况自行决定。
代码示例:
复制代码 代码如下:

<?php
class SingletonExample{
    private function __construct(){}//防止直接实例化
  public static function getInstance(){ //不与任何对象有关联
 static $instance=null;    //调用此函数的所有代码共享该变量,不必要让其是类的静态变量
 if($instance==null){
   $instance=new SingletonExample();
     }
   return $instance;
  }
}
$obj1=SingletonExample::getInstance();
$obj2=SingletonExample::getInstance();
var_dump($obj1===$obj2);// true   是同一个实例
?>

Multiton与singleton相似,不同的是后者需要getInstance()函数传递关键值。
对于给定的关键值只会存在唯一的对象实例,如果有多个节点,每个节点拥有唯一的表识符,且各个节点在某单次执行(如cms里的节点)可能出现多次,那么就可以用Multiton模式实现这些节点啊,Multiton节省内存,并确保同一个对象的多个实例不发生冲突.
示例:
复制代码 代码如下:

 <?php
 class MultitonExample{
 private function __construct(){}//防止直接实例化

   public static function getInstance($key){
  static $instance=array();   
  if(!array_key_exists($key,$instance)){
    $instance[$key]=new SingletonExample();
      }
    return $instance($key);
   }
 };
 ?>

相关文章

  • 深入解析PHP的Yii框架中的缓存功能

    深入解析PHP的Yii框架中的缓存功能

    这篇文章主要介绍了PHP的Yii框架中的缓存功能,作为一个追求高大全的重量级框架,Yii的缓存存储器和API十分丰富,需要的朋友可以参考下
    2016-03-03
  • php写入txt乱码的解决方法

    php写入txt乱码的解决方法

    在本篇文章里小编给大家分享的是关于php写入txt乱码的知识点以及解决方法,有需要的朋友们参考下。
    2019-09-09
  • PHP得到mssql的存储过程的输出参数功能实现

    PHP得到mssql的存储过程的输出参数功能实现

    在开发过程中可能会遇到无法取得MSSQL存储过程的输出参数,很多朋友都不知道该怎么办,本文将详细介绍PHP得到mssql的存储过程的输出参数功能实现
    2012-11-11
  • PHP给源代码加密的几种方法汇总(推荐)

    PHP给源代码加密的几种方法汇总(推荐)

    下面小编就为大家分享一篇PHP给源代码加密的几种方法汇总(推荐),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • php强制用户转向www域名的方法

    php强制用户转向www域名的方法

    这篇文章主要介绍了php强制用户转向www域名的方法,可实现模拟301重定向的功能,并且针对无法head重定向的情况输出链接,需要的朋友可以参考下
    2015-06-06
  • php文档更新介绍

    php文档更新介绍

    php.net最近更新了php文档,比较有用的是新增的pman工具。pman是一个命令行小工具,方便查看php函数的本地帮助文档,但是不包含php.net的评论数据。
    2011-07-07
  • php使用环形链表解决约瑟夫问题完整示例

    php使用环形链表解决约瑟夫问题完整示例

    这篇文章主要介绍了php使用环形链表解决约瑟夫问题,简单描述了约瑟夫问题并结合实例形式分析了php基于环形链表解决约瑟夫问题的相关操作技巧,注释中包含较为详尽的说明便于理解,需要的朋友可以参考下
    2018-08-08
  • PHP自动识别字符集并完成转码详解

    PHP自动识别字符集并完成转码详解

    话不多说,直接上函数,这个函数是用来对字符串进行检查和转码的。需要的朋友可以过来参考下
    2013-08-08
  • php中错误处理操作实例分析

    php中错误处理操作实例分析

    这篇文章主要介绍了php中错误处理操作,结合实例形式分析了php错误的触发、处理、日志记录等相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • php实现登录tplink WR882N获取IP和重启的方法

    php实现登录tplink WR882N获取IP和重启的方法

    这篇文章主要介绍了php实现登录tplink WR882N获取IP和重启的方法,涉及php基于curl的登陆及数据传输相关技巧,需要的朋友可以参考下
    2016-07-07

最新评论