PHP多例模式

    添加时间:2013-6-18 点击量:

    进修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
    ?>


    文艺不是炫耀,不是花哨空洞的文字堆砌,不是一张又一张的逆光照片,不是将旅行的意义转化为名牌包和明信片的物质展示;很多时候它甚至完全不美——它嘶吼、扭曲,它会痛苦地抽搐,它常常无言地沉默。——艾小柯《文艺是一种信仰》
    分享到: