PHP設計模式:簡單工廠
簡單工廠
簡單工廠模式的工廠類一般是使用靜態方法,通過接收的參數的不同來返回不同的對象實例。
也就是使用的時候通過傳參來確定生成不同的對象。
簡單工廠UML圖:
簡單工廠需要有3個角色:
- Product介面類:用於定義產品規範;
- 具體的產品實現,例如ConcreateProductA、ConcreateProductB;
- 簡單工廠類SimpleFactory:用於生成具體的產品。
使用的時候通過傳參數給簡單工廠類,可以生成想要的產品。
代碼: ICar.php:定義產品規範:
namespace YjcSimpleFactory;
interface ICar
{
public function driver;
}
具體產品實現:
namespace YjcSimpleFactory;
class Benz implements ICar
{
public function driver
{
echo "benz driver.";
}
}
class Bmw implements ICar
{
public function driver
{
echo "bmw driver.";
}
}
簡單工廠類SimpleFactory:
namespace YjcSimpleFactory;
class SimpleFactory
{
public static function makeCar($type){
switch ($type){
case "benz":
return new Benz;
break;
case "bmw":
return new Bmw;
break;
default:
throw new Exception("not support type!");
break;
}
}
}
參數代碼:
$car = SimpleFactory::makeCar("benz");
$car->driver;
簡單工廠的優點/缺點:
優點:簡單工廠模式能夠根據外界給定的信息,決定究竟應該創建哪個具體類的對象。明確區分了各自的職責和權力,有利於整個軟體體系結構的優化。
缺點:很明顯工廠類集中了所有實例的創建邏輯,容易違反GRASPR的高內聚的責任分配原則。
參考:
1、設計模式:簡單工廠、工廠方法、抽象工廠之小結與區別 - superbeck的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/superbeck/article/details/4446177
2、簡單工廠、工廠方法、抽象工廠、策略模式、策略與工廠的區別 - Danny Chen - 博客園
http://www.cnblogs.com/zhangchenliang/p/3700820.html


※《基於Node.js實現簡易聊天室系列之詳細設計》
※libpng處理png圖片(二)
※我們用了不到200行代碼實現的文件日誌系統,極佳的IO性能和高並發支持,附壓力測試數據
TAG:科技優家 |
※基於LabVIEW的PEMFC單電池電壓巡檢系統設計
※用PPT做拼圖設計
※CdG PLAY的愛心設計師,這次聯合NBA球衣大改造!
※CUUNION CONCEPT FAIR 設計聯合概念展:尋找「中國版「設計
※甜品店LOGO設計合集
※設計師黃譯作品:J HOUSE
※設計書單 | 聊一聊LOGO設計
※平面設計:WUWENQIAONI
※基於Axure的移動端APP產品設計規範
※30個創意的手機APP表單UI界面設計
※中國建筑西南設計研究院設計六院—標誌設計·YSYdesign·LOGO設計案例
※平面設計 品牌LOGO文字設計案例分享
※摺紙風格LOGO設計合集
※中式餐廳LOGO設計合集
※工業設計中產品族設計DNA探討
※奶茶品牌LOGO設計合集
※產品設計師 REID SCHLEGEL 的草稿圖繪本
※DIESEL 正式啟動THE RED TAG 設計計劃
※Dior、范思哲、CHANEL世界著名服裝設計師背後的工作狀態
※數字8 LOGO設計合集