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 相关文章推荐
不用iconv库的gb2312与utf-8的互换函数
Oct 09 PHP
基于mysql的论坛(1)
Oct 09 PHP
怎样才能成为PHP高手?学会“懒惰”的编程
Dec 05 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
Aug 21 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
Apr 28 PHP
Codeigniter(CI)框架分页函数及相关知识
Nov 03 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
PHP实现留言板功能的详细代码
Mar 25 PHP
Discuz不使用插件实现简单的打赏功能
Mar 21 PHP
thinkphp5修改view到根目录实例方法
Jul 02 PHP
PHP获取当前时间不准确问题解决方案
Aug 14 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
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
LAMP环境使用Composer安装Laravel的方法
2017/03/25 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
python实现网站的模拟登录
2016/01/04 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
高中生学习生活的自我评价
2013/10/09 职场文书
写好自荐信的要点
2013/11/06 职场文书
教师实习自我鉴定
2013/12/11 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
安全环保标语
2014/06/09 职场文书
安全施工责任书
2014/08/25 职场文书
中华魂放飞梦想演讲稿
2014/08/26 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
校运动会广播稿300字
2014/10/07 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
python中的None与NULL用法说明
2021/05/25 Python
MySQL学习必备条件查询数据
2022/03/25 MySQL
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers
python计算列表元素与乘积详情
2022/08/05 Python