本系列主要記錄設計模式的意圖是什麼,它要解決一個什麼問題,什麼時候可以使用它;它是如何解決的,掌握它的結構圖,記住它的關鍵代碼;能夠想到至少兩個它的應用實例,一個生活中的,一個軟件中的;這個模式的優缺點是什麼,其有哪些使用場景,在使用時要注意什麼。
3.抽象工廠
意圖:提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類
主要解決:主要解決接口選擇的問題
什麼時候使用:系統的產品有多於一個的產品族,而系統只消費其中某一族的產品
如何解決 :在一個產品族裡面,定義多個產品
結構圖:
關鍵代碼:在一個工廠裡聚合多個同類產品
應用實例:工作了,為了參加一些聚會,肯定有兩套或多套衣服吧,比如說有商務裝(成套,一系列具體產品)、時尚裝(成套,一系列具體產品),甚至對於一個家庭來說,可能有商務女裝、商務男裝、時尚女裝、時尚男裝,這些也都是成套的,即一系列具體產品.咱們假設一種情況(現實中是不存在的,要不然,沒法進入共產主義了,但有利於說明抽象工廠模式),在你的家中,某一個衣櫃(具體工廠)只能存放某一種這樣的衣服(成套,一系列具體產品),每次拿這種成套的衣服時也自然要從這個衣櫃中取出了.用OO的思想去理解,所有的衣櫃(具體工廠)都是衣櫃類的(抽象工廠)某一個,而每一件成套的衣服又包括具體的上衣(某一具體產品),褲子(某一具體產品),這些具體的上衣其實也都是上衣(抽象產品),具體的褲子也都是褲子(另一個抽象產品).
優點:1當一個產品族中的多個對象被設計成一起工作時,它能保證客戶端始終只使用同一個產品族中的對象。
缺點:產品族擴展非常困難,要增加一個系列的某一產品,既要在抽象的Creator裡加代碼,又要在具體的裡面加代碼
使用場景:1.QQ換皮膚,一整套一起換 2.生成不同操作系統的程序
注意事項:產品族難擴展,產品等級易擴展