下面爲工廠模式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(); } }
經過上面兩組代碼能夠發現,工廠模式和工廠方法實際上是一個套路。都是寫個接口進行約束。方法就是工廠模式進行了進一步細分,帶了多了一些,可是更便於管理。接口