zoukankan      html  css  js  c++  java
  • PHP多例模式

    学习java就知道设计模式中有多例模式:

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

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

    <?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 
    ?>
    个人独立博客:www.phpddt.com,关注web开发,欢迎交流!
  • 相关阅读:
    c++的正则库 pcre
    http://alibench.com
    常用正则表达式,来自新浪微博的js
    mysql的反向
    字母汉子组合的验证码,包括实现看不清换一个的功能
    什么是Ajax
    做“时间日志”
    计划比目标还要重要!
    成功座右铭一
    建立组织
  • 原文地址:https://www.cnblogs.com/phpddt/p/3141661.html
Copyright © 2011-2022 走看看