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中Session的概念
Oct 09 PHP
用PHP和ACCESS写聊天室(四)
Oct 09 PHP
java EJB 加密与解密原理的一个例子
Jan 11 PHP
PHP中基本符号及使用方法
Mar 23 PHP
php设计模式  Command(命令模式)
Jun 17 PHP
深入解析PHP中逗号与点号的区别
Aug 05 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
Jun 12 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
php.ini中的request_order推荐设置
May 10 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
php-fpm重启导致的程序执行中断问题详解
Apr 29 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防攻击代码升级版
2010/12/29 PHP
PHP 读取和编写 XML
2014/11/19 PHP
php+redis实现多台服务器内网存储session并读取示例
2017/01/12 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
图片上传即时显示缩略图的js代码
2009/05/27 Javascript
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
jQuery 实现侧边浮动导航菜单效果
2014/12/26 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
Python 2与Python 3版本和编码的对比
2017/02/14 Python
Python清空文件并替换内容的实例
2018/10/22 Python
Python实现微信机器人的方法
2019/09/06 Python
Python 私有化操作实例分析
2019/11/21 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
详解python的super()的作用和原理
2020/10/29 Python
python简单实现插入排序实例代码
2020/12/16 Python
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
银行会计财务工作个人的自我评价
2013/10/29 职场文书
《云雀的心愿》教学反思
2014/02/25 职场文书
大学生毕业求职信
2014/06/12 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
项目负责人岗位职责
2015/02/15 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技