PHP多例模式介绍
发布时间:2020-12-13 06:26:44 所属栏目:PHP教程 来源:网络整理
导读:学习java就知道设计模式中有多例模式: 1、多例类可以有多个实例 2、多例类必须能够自我创建并管理自己的实例,并向外界提供自己的实例。 大家都知道PHP单例模式,却很少说PHP多例模式,下面是在wikipedia上看到的PHP多例模式的例子: 代码如下: abstract cl
学习java就知道设计模式中有多例模式: 1、多例类可以有多个实例 大家都知道PHP单例模式,却很少说PHP多例模式,下面是在wikipedia上看到的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 $stringn"; } } class GoodBye extends Multiton { public function __construct($string = 'my',$string2 = 'darling') { echo "Goodbye $string $string2n"; } } $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多例模式节省内存,确保同一个对象的多个实例不发生冲突。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |