下面为工厂模式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(); } }
经过上面两组代码能够发现,工厂模式和工厂方法实际上是一个套路。都是写个接口进行约束。方法就是工厂模式进行了进一步细分,带了多了一些,可是更便于管理。接口