前言:設計模式不是某個api,是一系列經驗總結後的開發模板。
工廠模式的分類:
工廠方法模式:定義了乙個用於建立方法的介面,讓子類決定例項化哪乙個類。
抽象方法模式:定義一系列相關或者相互依賴的介面,無需指定具體的類。是方法模式的擴充套件。
工廠模式的意義:需要大量建立某類具有相同屬性的物件時,將例項化的任務交給某個類去做,而不是手動new乙個物件。
工廠模式適合的應用場景
1:系統不依賴於產品類的例項被建立和表示的細節
2:系統的產品有至少乙個的產品族
3:同屬於同乙個產品族的產品是設計在一起使用的
3:不同的產品以介面的面貌出現,使系統不依賴於介面實現的細節
參考例項
客戶端要生產衣服,有兩類產品分別是短裙和t恤,原始的方法是,需要某個物件的時候,new乙個新的物件。在工廠模式裡面,建立這個例項的方法與客戶端分離,客戶端只需要提出需求—我要生產一件t恤,然後具體的生產方法交給工廠去做。我們只需要定義乙個抽象的服裝介面,再實現相應的生產某種服裝的方法,然後定義乙個服裝工廠,根據類名生產相應的服裝(根據類名建立物件)。
工廠模式就將客戶端與例項化物件隔離開,進行責任分割。
步驟:
定義服裝介面:
public
inte***ce clothes
根據需求實現相應方法的類:
public
class
skirts
implements
clothes
public
class
tshirt
implements
clothes
定義服裝工廠類,決定例項化物件
public
class clothesfactory catch (instantiationexception | illegalacces***ception | classnotfoundexception e)
return
null;
}}
客戶端實現
只需要建立乙個工廠物件,但是具體的服裝例項,由工廠物件建立。實現責任分離的松耦合
public
class test
}
總結
工廠模式的特點:
1:系統可以在不修改具體工廠角色的情況下引進新的產品,可擴充套件性強
2:客戶端只用提出需求不必關心如何建立,明確了職責
3:更好的理解面向介面程式設計
設計模式學習之工廠模式
工廠模式,factorymethod,定義乙個工廠類的基類,基類中不再去實現具體的產品類的例項,而是將產品類的例項化工作放在其子類中進行,然後由客戶端來決定要使用那一種產品類的例項,工廠模式也要求產品類都具有相同的產品基類,這和簡單工廠模式比較相似。個人理解 工廠模式和簡單模式最大的區別是將產品類的...
設計模式之工廠模式學習
與簡單工廠模式相比,工廠模式為每個類增加了乙個工廠類。每個工廠類返回它所對應的類的物件指標。簡單工廠模式的最大優點 工廠類中包含了必要的邏輯判斷。根據客戶端的選擇條件動態的例項化相關的類。沒有在客戶端實現判斷,也就去除了與客戶端的依賴。簡單工廠模式實現計算類結構圖 工廠模式實現計算類結構圖 工廠模式...
設計模式之工廠模式學習
與簡單工廠模式相比,工廠模式為每個類增加了乙個工廠類。每個工廠類返回它所對應的類的物件指標。簡單工廠模式的最大優點 工廠類中包含了必要的邏輯判斷。根據客戶端的選擇條件動態的例項化相關的類。沒有在客戶端實現判斷,也就去除了與客戶端的依賴。簡單工廠模式實現計算類結構圖 工廠模式實現計算類結構圖 工廠模式...