PHP 注册树模式

<?php

interface Number
{
	public function hero();
}

class Number1 implements Number
{
	public function hero()
	{
		return "一号位:矮子";
	}
}
class Number2 implements Number
{
	public function hero()
	{
		return "二号位:影魔";
	}
}
class Number3 implements Number
{
	public function hero()
	{
		return "三号位:女王";
	}
}
class Number4 implements Number
{
	public function hero()
	{
		return "四号位:抄袭";
	}
}
class Number5 implements Number
{
	public function hero()
	{
		return "五号位:冰女";
	}
}

class Factory
{
	public static function toYou($num)
	{
		switch($num)
		{
			case 1:
				return new Number1();
				break;
			case 2:
				return new Number2();
				break;
			case 3:
				return new Number3();
				break;
			case 4:
				return new Number4();
				break;
			case 5:
				return new Number5();
				break;	
		}
	}
}

//$a = Factory::toYou(1);
//echo $a->hero();

//	注册树
class Register
{
	protected static $objects;
	
	public static function set($alias,$object)
	{
		self::$objects[$alias] = $object;
	}
	
	public static function get($alias)
	{
		return self::$objects[$alias];
	}
	
	public static function _unset($alias)
	{
		unset(self::$objects[$alias]);
	}
}

Register::set('hero1',Factory::toYou(1));
Register::set('hero2',Factory::toYou(2));
Register::set('hero3',Factory::toYou(3));
Register::set('hero4',Factory::toYou(4));
Register::set('hero5',Factory::toYou(5));

$hero1 = Register::get('hero1');
$hero2 = Register::get('hero2');
$hero3 = Register::get('hero3');
$hero4 = Register::get('hero4');
$hero5 = Register::get('hero5');

echo $hero1->hero();
echo $hero2->hero();
echo $hero3->hero();
echo $hero4->hero();
echo $hero5->hero();

猜你喜欢

转载自blog.csdn.net/dote2r/article/details/78550484