日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php factory interface,PHP设计模式之工厂方法*解读

發布時間:2024/7/23 php 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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设计模式之工厂方法*解读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。