意圖:
提供一個建立一系列相關或者互相依賴對象的接口,而無需指定它們具體的類。
别名:Kit
補充:
抽象産品A : (産品A1 和産品 A2)
抽象産品B : ( 産品B1 和 産品B2)
一般情況下:想要建立産品A1和A2
{
ProductA a1 = new ProductA1();
ProductA a2 = new ProductA2();
}
在工廠設計模式中,可以設計一個工廠,由它來提供産品A1和産品A2的建立過程,即
工廠模式
ProductAFactory{
public static ProductA createProductA1(){
return ProductA();
}
public static ProductA createProductA2(){
return ProductA2();
}
}
抽象工廠:
将相似的工廠進行抽象合并 ,是工廠模式的進一步抽象升華
在這個抽象工廠中 A1和B1====A2 和 B2 是有相似關系的
AbstarctFactory{
createProductA(){
// 子類/實作類,可以根據需要建立産品 A1 或産品 A2
}
createProductB(){
// // 子類/實作類,可以根據需要建立産品 B2 或産品 B2
}
}
動機:
抽象工廠模式提供了一種方式,可以将一組具有同一主題的單獨的工廠封裝起來。在正常使用中,用戶端程式需要建立抽象工廠的具體實作,然後使用抽象工廠作為接口來建立這一主題的具體對象。用戶端程式不需要知道(或關心)它從這些内部的工廠方法中獲得對象的具體類型,因為用戶端程式僅使用這些對象的通用接口。抽象工廠模式将一組對象的實作細節與他們的一般使用分離開來。

“工廠”是建立産品(對象)的地方,其目的是将産品的建立與産品的使用分離。 抽象工廠模式的目的,是将 若幹抽象産品的接口與 不同主題産品的具體實作分離開。這樣就能在增加新的具體工廠的時候,不用修改引用抽象工廠的用戶端代碼。
使用抽象工廠模式,能夠在具體工廠變化的時候,不用修改使用工廠的用戶端代碼,甚至是在運作時。然而,使用這種模式或者相似的設計模式,可能給編寫代碼帶來不必要的複雜性和額外的工作。正确使用設計模式能夠抵消這樣的“額外工作 執行個體:
抽象工廠接口
優點:
1.具體産品從客戶代碼中被分離出來
容易改變産品的系列
将一個系列的産品族統一到一起建立
缺點:
1.在産品族中擴充新的産品是很困難的,它需要修改抽象工廠的接口
轉載于:https://www.cnblogs.com/-Titanium/p/10643890.html