PHP多例模式介绍


Posted in PHP onJune 24, 2013

学习java就知道设计模式中有多例模式:

1、多例类可以有多个实例
2、多例类必须能够自我创建并管理自己的实例,并向外界提供自己的实例。

大家都知道PHP单例模式,却很少说PHP多例模式,下面是在wikipedia上看到的PHP多例模式的例子:

<?php 
abstract class Multiton { 
    private static $instances = array(); 
    public static function getInstance() { 
$key = get_called_class() . serialize(func_get_args()); 
if (!isset(self::$instances[$key])) { 
$rc = new ReflectionClass(get_called_class()); 
self::$instances[$key] = $rc->newInstanceArgs(func_get_args()); 
} 
return self::$instances[$key]; 
    } 
} class Hello extends Multiton { 
public function __construct($string = 'World') { 
echo "Hello $string\n"; 
} 
} 
class GoodBye extends Multiton { 
public function __construct($string = 'my', $string2 = 'darling') { 
echo "Goodbye $string $string2\n"; 
} 
} 
$a = Hello::getInstance('World'); 
$b = Hello::getInstance('bob'); 
// $a !== $b 
$c = Hello::getInstance('World'); 
// $a === $c 
$d = GoodBye::getInstance(); 
$e = GoodBye::getInstance(); 
// $d === $e 
$f = GoodBye::getInstance('your'); 
// $d !== $f 
?>

可以看到PHP多例模式需要getInstance()传递关键值,对于给定的关键值,PHP多例模式只会存在唯一的对象实例,PHP多例模式节省内存,确保同一个对象的多个实例不发生冲突。

PHP 相关文章推荐
php 信息采集程序代码
Mar 17 PHP
PHP 各种排序算法实现代码
Aug 20 PHP
php中inlcude()性能对比详解
Sep 16 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
php生成扇形比例图实例
Nov 06 PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 PHP
PHP中Session和Cookie是如何操作的
Oct 10 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
PHP环境搭建的详细步骤
Jun 30 PHP
PHP打印输出函数汇总
Aug 28 PHP
laravel 事件/监听器实例代码
Apr 12 PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
Jun 24 #PHP
PHP垃圾回收机制引用计数器概念分析
Jun 24 #PHP
PHP随机字符串生成代码(包括大小写字母)
Jun 24 #PHP
PHP 读取大文件的X行到Y行内容的实现代码
Jun 24 #PHP
解析在PHP中使用全局变量的几种方法
Jun 24 #PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 #PHP
解析Ubuntu下crontab命令的用法
Jun 24 #PHP
You might like
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
Python人脸识别初探
2017/12/21 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
网络管理专业求职信
2014/03/15 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
就业协议书怎么填
2014/09/15 职场文书
工人先进事迹材料
2014/12/26 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
北京爱情故事观后感
2015/06/12 职场文书
2015入党自传书范文
2015/06/26 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
Javascript 解构赋值详情
2021/11/17 Javascript
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫
python在package下继续嵌套一个package
2022/04/14 Python