簡單工廠模式

2021-08-28 04:20:51 字數 1326 閱讀 8587

優缺點及適用場景參考

簡單工廠

案例:展示圓形和長方形的重量和**

class shape

else

if ($type == 'rectangle') {

return new rectangle();}}

public function showweigth($type)}}

缺點1.大量工作在產品類中做了, 不符合單一原則

2.大量的if, else , 違背對擴充套件開放, 對修改關閉

定義乙個工廠類, 它可以根據引數的不同返回不同的例項,被建立的例項通常具有相同的父類。因為簡單工廠模式中建立例項的方法屬於靜態方法(static), 所以簡單工廠模式又叫靜態工廠方法(static factory method), 屬於類建立型模式

四個角色

abstractproduct:抽象產品類, 主要定義了產品的一些介面

concertproduct:具體產品類, 繼承抽象工廠

factory:工廠方法, 用於建立具體的產品例項

uml圖

核心**

static

public product create(string type)

else

if (type.equals(

"b"))

return product;

}

缺點:1.工廠類的職責過重

2. 如果產品類太多, 不利於擴充套件

優點;

1.工廠類包含必要的判斷邏輯,可以決定在什麼時候建立哪乙個產品類的例項,客戶端可以免除直接建立產品物件的職責,而僅僅「消費」產品,簡單工廠模式實現了物件建立和使用的分離。

2.客戶端無須知道所建立的具體產品類的類名,只需要知道具體產品類所對應的引數即可,對於一些複雜的類名,通過簡單工廠模式可以在一定程度減少使用者的記憶量

使用場景:

1. 工廠類負責建立的物件比較少,由於建立的物件較少,不會造成工廠方法中的業務邏輯太過複雜。

2. 客戶端只知道傳入工廠類的引數,對於如何建立物件並不關心。

劉偉設計模式

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...

工廠模式 簡單工廠

工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...

簡單工廠模式,工廠模式,抽象工廠模式

三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...