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文本操作类
Nov 25 PHP
PHP写UltraEdit插件脚本实现方法
Dec 26 PHP
php中CI操作多个数据库的代码
Jul 05 PHP
php实现设计模式中的单例模式详解
Oct 11 PHP
浅谈PHP中output_buffering
Jul 13 PHP
使用URL传输SESSION信息
Jul 14 PHP
php提高网站效率的技巧
Sep 29 PHP
thinkPHP查询方式小结
Jan 09 PHP
详解PHP原生DOM对象操作XML的方法
Oct 17 PHP
PHP laravel中的多对多关系实例详解
Jun 07 PHP
Laravel学习教程之路由模块
Aug 18 PHP
Laravel框架文件上传功能实现方法示例
Apr 16 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
AM/FM收音机的安装与调试
2021/03/02 无线电
php实现的任意进制互转类分享
2015/07/07 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
Python中的连接符(+、+=)示例详解
2017/01/13 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
在Django中实现添加user到group并查看
2019/11/18 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
餐饮部总监岗位职责范文
2014/02/13 职场文书
说明书怎么写
2014/05/06 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
文明旅游倡议书
2015/04/28 职场文书
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript