二 設計模式 工廠模式

2021-07-31 16:09:34 字數 1252 閱讀 4772

一.

傳統時以pizza類舉例,乙個抽象類pizza,由幾個pizza實現類實現,主餐廳看看客戶點什麼便生產,但是如果需要增加新的pizza品種,則要增加乙個新的實現類,然後主餐廳裡增加對邏輯的判斷,顯然,違背了開放關閉原則。

所以:工廠模式為解決某些需要生產大量一批類的問題

二.簡單工廠模式

定義了乙個建立物件的類,由這個類來封裝例項化物件的行為

public

class ******pizzafactory else

if (ordertype.equals("greek")) else

if (ordertype.equals("pepper"))

return pizza;}}

要東西餐廳不生產,直接交給工廠生產:

缺點:新增產品時,需要修改工廠類,不符合開閉原則

ordertype = gettype();

pizza = m******pizzafactory.createpizza(ordertype);

三.工廠模式工廠方法模式:定義了乙個建立物件的抽象方法,由子類決定要例項化的類。

工廠方法模式將物件的例項化推遲到子類

滑鼠:惠普滑鼠 戴爾滑鼠 工廠:惠普滑鼠工廠 戴爾滑鼠工廠 符合開閉原則

abstract pizza createpizza(string ordertype);
四.抽象工廠模式抽象工廠模式:定義了乙個介面用於建立相關或有依賴關係的物件族,而無需明確指定具體類

把工廠抽象為藉口,有工廠實現類(倫敦的工廠,巴黎的工廠),建立乙個訂單,引數傳入指定的工廠,讓其去生產。

morderpizza=new orderpizza(new ldfactory());
五.關鍵點變數不要持有具體類的引用

不要讓類繼承自具體類,要繼承自抽象類或介面

不要覆蓋基類中已實現的方法

設計模式(二)工廠模式

與 模式不同,生產模式隱藏過程,只關注結果 簡單工廠,工廠方法,抽象工廠 一,簡單工廠模式 public inte ce car public class aodi implements car public class baoma implements car public class facto...

設計模式(二) 工廠模式

前言 我在面試的時候,有時候會問到候選人有沒有熟悉的設計模式,一般大部分候選人會選擇說熟悉單例和工廠 也有部分人會說熟悉觀察者 如果我進一步問候選人是如何應用工廠模式的,10個候選人有10個會舉連線sqlserver,oracle,mysql等不同資料庫時會用工廠模式產生不同的連線的例子。omg,我...

設計模式 (二)工廠模式

昨天看了一下工廠模式,發現大部分概念都太官方,不想看,所以我今天自己用 來擼了一遍,如果有不對的地方,歡迎博友討論。請註明出處!文字不多,主要通過 來理解,概念請結合 去網上搜 場景 某汽車公司老闆讓你設計乙個汽車介面,介面用來開車駕駛,例如汽車有寶馬 奧迪 賓士.首先抽象出car類 public ...