首页 后端开发 php教程 php设计模式之单例、多例设计模式的应用分析_php技巧

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

May 17, 2016 am 08:57 AM
php设计模式 单例

单例(Singleton)模式和不常见的多例(Multiton)模式控制着应用程序中类的数量。如模式名称,单例只能实例化一次,只有一个对象,多例模式可以多次实例化。

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

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

复制代码 代码如下:

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节省内存,并确保同一个对象的多个实例不发生冲突.
示例:
复制代码 代码如下:

  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);
   }
 };
 ?>
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
两个点博物馆:所有展览以及在哪里可以找到它们
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
两个点博物馆:所有展览以及在哪里可以找到它们
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Go语言中常见的编程范式和设计模式 Go语言中常见的编程范式和设计模式 Mar 04, 2024 pm 06:06 PM

Go语言中常见的编程范式和设计模式

PHP中常用的设计模式及其实现方法 PHP中常用的设计模式及其实现方法 Jun 27, 2023 pm 01:08 PM

PHP中常用的设计模式及其实现方法

Golang中单例模式的实现方式有哪些? Golang中单例模式的实现方式有哪些? Mar 05, 2024 pm 05:45 PM

Golang中单例模式的实现方式有哪些?

php有哪些设计模式 php有哪些设计模式 Jul 25, 2023 am 09:39 AM

php有哪些设计模式

PHP核心的设计模式与实践 PHP核心的设计模式与实践 Nov 08, 2023 pm 08:58 PM

PHP核心的设计模式与实践

PHP7.0中的设计模式有哪些? PHP7.0中的设计模式有哪些? May 26, 2023 am 09:21 AM

PHP7.0中的设计模式有哪些?

PHP中的设计模式在框架中的应用方法详解 PHP中的设计模式在框架中的应用方法详解 Jun 09, 2023 am 11:55 AM

PHP中的设计模式在框架中的应用方法详解

如何在Java中创建一个单例枚举? 如何在Java中创建一个单例枚举? Aug 29, 2023 am 10:21 AM

如何在Java中创建一个单例枚举?

See all articles