php factory interface,PHP设计模式之工厂方法*解读
「PHP」工廠方法是針對每一種產品提供一個工廠類。通過不同的工廠實例來創建不同的產品實例。
相比簡單工廠 ,創建對象這件事不再交由一個類來創建:把簡單工廠拆分,每個產品由專門的一個簡單工廠來實現,每個簡單工廠實現工廠接口類。這樣實現在同一等級結構中,支持增加任意產品。
工廠方法UML圖:
簡單工廠需要有4個角色:
Product接口類:用于定義產品規范;
具體的產品實現,例如ConcreateProductA、ConcreateProductB;
抽象工廠類IFactory:用于規范工廠;
具體產品創建的簡單工廠,例如ConcreateFactoryA、ConcreateFactoryB。
代碼: ICar.php:定義產品規范:
namespace Yjc\SimpleFactory;
interface ICar
{
public function driver();
}
具體產品實現:
namespace Yjc\SimpleFactory;
class Benz implements ICar
{
public function driver()
{
echo 'benz driver.';
}
}
class Bmw implements ICar
{
public function driver()
{
echo 'bmw driver.';
}
}
抽象工廠類IFactory:
namespace Yjc\Factory;
interface IFactory
{
public static function makeCar();
}
具體工廠實現:
namespace Yjc\Factory;
class FactoryBenz implements IFactory
{
public static function makeCar()
{
return new Benz();
}
}
class FactoryBmw implements IFactory
{
public static function makeCar()
{
return new Bmw();
}
}
測試:
$car = Factory\FactoryBenz::makeCar();
$car->driver();
思考:如果不使用工廠模式來實現我們的例子,也許代碼會減少很多——只需要實現已有的車,不使用多態。但是在可維護性上,可擴展性上是非常差的(你可以想象一下添加一輛車后要牽動的類)。因此為了提高擴展性和維護性,多寫些代碼是值得的,尤其是復雜項目里。
優點:
工廠方法模式就很好的減輕了工廠類的負擔,把某一類/某一種東西交由一個工廠生產;(對應簡單工廠的缺點1)
同時增加某一類”東西“并不需要修改工廠類,只需要添加生產這類”東西“的工廠即可,使得工廠類符合開放-封閉原則。
缺點:
相比簡單工廠,實現略復雜。
對于某些可以形成產品族的情況處理比較復雜。
對于缺點2,我們可以借用[抽象工廠]來實現。
總結
以上是生活随笔為你收集整理的php factory interface,PHP设计模式之工厂方法*解读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java try catch 例子_ja
- 下一篇: php实现第三方邮箱登录_JavaScr