一.
傳統時以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 ...