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 Error与Logging函数的深入理解
Jun 03 PHP
一个简单的php加密解密函数(动态加密)
Jun 19 PHP
PHP中数组定义的几种方法
Sep 01 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
php更新mysql后获取改变行数的方法
Dec 25 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
php截取视频指定帧为图片
May 16 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
PHP微信模板消息操作示例
Jun 29 PHP
PHP实现的文件上传类与用法详解
Jul 05 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编程开发“虚拟域名”系统
2006/10/09 PHP
JS 网站性能优化笔记
2011/05/24 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
用jscript实现新建word文档
2007/06/15 Javascript
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
代码获取历史上的今天发生的事
2014/04/11 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
javascript常用的方法整理
2015/08/20 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
python实现读取命令行参数的方法
2015/05/22 Python
Python实现批量下载图片的方法
2015/07/08 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
如何编写python的daemon程序
2021/01/07 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
《秋游》教学反思
2014/04/24 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
就业意向书范本
2015/05/11 职场文书
解析Java异步之call future
2021/06/14 Java/Android