設計模式之工廠模式和工廠方法

下面爲工廠模式php

<?php

/*
*優勢:爲系統結構提供靈活的動態擴展機制,便於維護。
*/

interface Skill
{
	function Lumbering();
	function buy();
}

class Person implements Skill
{
	function Lumbering()
	{
		echo "我在辛苦伐木<br />";
	}
	function buy()
	{
		echo "我在用人民幣買房子<br />";
	}
}

class Spirit implements Skill
{
	function Lumbering()
	{
		echo "精靈在辛苦伐木<br />";
	}
	function buy()
	{
		echo "精靈在用精靈幣買房子<br />";
	}
}

class Factory
{//這個類就至關於一個工廠,全部實例化經過這裏進行,便於維護
	static function createHero($type)
	{
		switch ($type) {
			case 'person':
				return new Person();
				break;
			case 'spirit':
				return new Spirit();
				break;
			default:
				# code...
				break;
		}
	}
}

$person = Factory::createHero('person');
$spirit = Factory::createHero('spirit');

下面爲工廠方法code

<?php

interface Tel
{
	function call();
	function receive();
}

class XiaoMi implements Tel
{
	function call(){
		echo "我在用小米打電話";
	}
	function receive(){
		echo "我在用小米接電話";
	}
}
class HuaWei implements Tel
{
	function call(){
		echo "我在用華爲打電話";
	}
	function receive(){
		echo "我在用華爲接電話";
	}
}

//僅負責規定接口,具體實現給實現類
interface Factory
{
	static function createPhone();
}

class XiaoFactory implements Factory()
{
	static function createPhone()
	{
		return new XiaoMi();
	}
}
class HuaFactory implements Factory()
{
	static function createPhone()
	{
		return new HuaWei();
	}
}

 

經過上面兩組代碼能夠發現,工廠模式和工廠方法實際上是一個套路。都是寫個接口進行約束。方法就是工廠模式進行了進一步細分,帶了多了一些,可是更便於管理。接口

相關文章
相關標籤/搜索