前面已經說過了簡單工廠模式和普通工廠模式:鏈結
前沿:抽象工廠就是普通工廠模式的加強版本
優點:當乙個產品族中的多個物件被設計成一起工作時,它能保證客戶端始終只使用同乙個產品族中的物件。
使用場景:1、qq 換**,一整套一起換。 2、生成不同作業系統的程式。
前提:乙個總的衣櫃,總衣櫃裡面又分為7個衣櫃(分別對應星期一到星期日)一天一套一套,一套衣服又由上衣和下衣組成!
那麼如何保證使用者呼叫每乙個一套衣服就是當天的上衣和當天的下衣呢!所以這裡就分為三個普通工廠:
根據衣櫃中的具體某一天工廠載入相應的某一天的具體上衣工廠和具體下衣工廠即可!
最後使用者直接從相應天數的衣櫃中拿出衣服使用即可(此時的上衣和下衣都是當天的!!)
上衣分為
coatfactory:上衣總工廠
onecoatfactory:第一天的上衣工廠
twocoatfactory:第二天的上衣工廠
下衣分為
undercoatfactory:下衣總工廠
oneundercoatfactory:第一天的上衣工廠
twoundercoatfactory:第二天的上衣工廠
衣櫃分為
wardrobefactory:衣櫃總工廠
onewardrobefactory:第一天的衣服衣櫃工廠
twowardrobefactory:第二天的衣服衣櫃工廠
上衣:
package cn.gxm.abstractfactory;
/** * 上衣工廠
* @author xiaomi
* */
public inte***ce coatfactory
class onecoatfactory implements coatfactory }
class twocoatfactory implements coatfactory
}
下衣:
package cn.gxm.abstractfactory;
/** * 下衣工廠
* @author xiaomi
* */
public inte***ce undercoatfactory
class oneundercoatfactory implements undercoatfactory }
class twoundercoatfactory implements undercoatfactory
}
衣櫃:
package cn.gxm.abstractfactory;
/** * 總的衣櫃工廠
* @author xiaomi
* */
public inte***ce wardrobefactory
// 星期一穿的一套衣服在衣櫃一中
class onewardrobefactory implements wardrobefactory }
// 星期二穿的一套衣服在衣櫃二中
class twowardrobefactory implements wardrobefactory
}
使用者(測試類)
package cn.gxm.abstractfactory;
public class user
}
結果:
我是第一天的上衣
我是第一天的下衣
---------------
我是第二天的上衣
我是第二天的下衣
抽象工廠模式中包含:
(1)一系列互相有關聯的產品類,這些產品類具有相同的結構!
(2)一系列實的工廠類,實現由工提供的介面。每乙個實的工廠類產生一組相關的產品類的物件!
設計模式之四 抽象工廠模式
抽象工廠模式 abstract factory pattern 是圍繞乙個超級工廠建立其他工廠。該超級工廠又稱為其他工廠的工廠。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指定它們的類。每個生成的工廠都能按照工廠模式...
設計模式(四) 抽象工廠模式
前面說了兩種設計模式,簡單工廠模式和工廠模式。簡單工廠模式是定義乙個工廠類,工廠類根據呼叫時傳入的引數選擇建立哪乙個類的例項。工廠模式是為每個類建立乙個工廠,而這些工廠都實現了同乙個工廠,客戶端在呼叫的時候自己選擇某個類對應的工廠去建立某個類的例項。那抽象工廠又是什麼呢?抽象工廠在工廠模式的基礎上引...
設計模式(四) 抽象工廠模式
有時候我們需要乙個工廠可以提供多個產品物件,而不是單一的產品物件。為了更清晰地理解工廠方法模式,這裡先引入兩個概念 產品等級結構 即產品的繼承結構,比如乙個抽象類是電視機,其子類有海爾電視機 海信電視機 tcl電視機,則抽象電視機與具體品牌的電視機之間構成了乙個產品等級結構,抽象電視機是父類,而具體...