抽象工廠模式也是一種創建型的設計模式;
它是在工廠模式基礎上的一個延伸拓展,抽象工廠模式(Abstract Factory Pattern)是圍繞一個超級工廠創建其他工廠。該超級工廠又稱爲其他工廠的工廠,抽象工廠模式先生產一個超級工廠,超級工廠再去生產各個工廠,最後工廠再去生產對應的產品。
而工廠模式中,只有一個工廠,該工廠生產各種產品。
代碼示例如下圖:
分析:其中類FactoryProducer相當於是一個超級工廠,用於生產工廠,顏色工廠以及形狀工廠,在創建工廠時,不需要顯示的指定工廠的類型,統一是抽象工廠的類型(AbstractFactory),在實際使用時,只需要指定工廠的名稱即可生產出你想要的工廠。
抽象工廠AbstractFactory類,爲ColorFactory以及ShapeFactory提供了一個統一的接口。
在ColorFactory以及ShapeFactory類(工廠)中的實現方法等價於工廠模式,這兩個工廠在只知道產品名稱的前提下,即可生產出對應的產品。
如何使用:首先給定一個工廠名,由類FactoryProducer的對象生產一個具體的工廠,給定產品名稱,由具體的工廠生產出具體的產品。
可擴展性:可擴展性不好,如果新加一個工廠,則需要修改抽象工廠類的代碼,還要增加一個新增工廠的實現。(和新增一個產品是同理的)
優點:只需要一個超級工廠對象即可生產出各種工廠,對於某一個工廠,只需要一個工廠對象即可生產出同類的各種產品。