热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP多例模式探讨

大家都知道PHP单例模式,却很少说PHP多例模式,下面是在wikipedia上看到的PHP多例模式的例子
学习java就知道设计模式中有多例模式:

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

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

abstract class Multiton { /** by http://www.phpddt.com */ 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  ?>

推荐阅读
  • 拖拉切割直线 ... [详细]
  • 四月个人任务:Linux基础操作与网络管理
    本文介绍了两项主要任务:编写一个脚本来检测192.168.1.0/24子网中当前在线的IP地址,以及如何在Linux系统中挂载Windows网络共享目录。通过具体步骤和代码示例,帮助读者理解和掌握相关技能。 ... [详细]
  • VS Code 中 .vscode 文件夹配置详解
    本文介绍了 VS Code 中 .vscode 文件夹下的配置文件及其作用,包括常用的预定义变量和三个关键配置文件:launch.json、tasks.json 和 c_cpp_properties.json。 ... [详细]
  • 本文介绍了在Android Studio中通过代码和配置文件两种方法来移除Activity的标题栏,并讨论了当Activity继承自AppCompatActivity时的特殊处理方法。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置单节点的Redis服务,包括下载、解压、编译安装以及启动服务的具体步骤。 ... [详细]
  • 本周六上午11点左右到达公司,回顾了一周的行业动态并完成了昨日的任务。下午主要解决了Axis2缓存问题以及DBS和KMS的相关技术难题。由于服务替换导致平台访问错误,经过多方查找未能解决,最终决定暂时搁置。此外,还分享了与朋友之间的沟通障碍及个人成长的思考。 ... [详细]
  • Pandas中使用sort_values方法进行数据排序
    本文介绍了如何利用Python的Pandas库中的sort_values方法对DataFrame对象进行排序。首先通过Numpy库生成随机数据,然后详细解释了DataFrame的创建过程及其参数,并重点探讨了sort_values方法的使用技巧。 ... [详细]
  • Python与Java在Appium中的应用:混合APP自动化测试方法详解
    本文详细探讨了如何使用Python和Java语言结合Appium框架进行混合APP的自动化测试,特别针对面试中常见的问题进行了整理和解答。 ... [详细]
  • 本文介绍了在Unity中如何利用颜色查找表来为富文本添加色彩,包括一系列常用颜色的十六进制代码,并提供了具体的代码示例。 ... [详细]
  • 本文介绍了如何在交易软件中设置选股策略,包括使用综合选股和条件选股的方法,以及如何结合多种技术指标进行复杂选股。 ... [详细]
  • 深入理解Java中的NIO、BIO与AIO
    本文详细解析了Java中三种重要的I/O模型:阻塞I/O(BIO)、非阻塞I/O(NIO)以及异步I/O(AIO),并探讨了它们在实际应用中的优缺点及适用场景。 ... [详细]
  • 如何找到笔记本电脑中的内存条位置
    随着技术的发展,便携式笔记本电脑已成为许多人工作和学习的选择。然而,受限于体积,部分笔记本的初始配置可能无法满足所有需求。因此,许多用户会选择自行升级内存条以提高性能。本文将详细介绍如何定位笔记本电脑内的内存条安装位置。 ... [详细]
  • 13、单向链表
    头文件:LinkList.hLinkList.cmain.cVS2 ... [详细]
  • 深入解析 Zend Guard 4 功能与配置
    本文旨在通过图文并茂的方式详细介绍 Zend Guard 4 的核心功能及其配置方法,特别适合英文阅读能力有限的技术人员。文中不仅提供了详细的步骤说明,还附带了实际操作中的注意事项,帮助读者更好地理解和应用这一工具。 ... [详细]
  • UVA 401 - 镜像回文字符串
    本题探讨了如何判断一个字符串是否为普通回文、镜像回文或两者都不是。通过特定的字符映射表来实现字符串的镜像转换,并根据转换后的结果进行分类。 ... [详细]
author-avatar
你们聊交给我
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有