抽象工廠模式 設計模式(九) 抽象工廠模式

2021-10-12 07:43:53 字數 1429 閱讀 3664

提供乙個為建立一組相關或相互依賴物件的介面,且無須指定它們的具體類。

它屬於建立型模式。在抽象工廠模式中,每個具體工廠都提供了多個用於建立多種不同型別具體物件的方法,這些不同型別的物件都存在乙個共同的屬性,構成乙個族。

上篇文章設計模式(八):工廠方法模式說到工廠方法模式中只考慮某一類產品的生產,例如可樂工廠只生產可樂,橙汁工廠只生產橙汁。而實際過程中,乙個工廠往往要生產多種類的產品,例如可樂和橙汁一起生產,方便售賣。原有的工廠方法模式不符合實際使用的要求,所以聰明的先輩們又想到了一種新的設計模式——抽象工廠模式。

使用抽象工廠模式一般要滿足以下條件。

抽象工廠模式中的工廠保留了工廠方法模式的優秀屬性,同時可以建立多種類的產品,而工廠方法模式的工廠只能建立一類產品。

抽象工廠模式的優點:

抽象工廠模式的缺點:

拓展同一族的產品困難,需要從抽象層到具體實現中修改**,違背了開放封閉原則

1、抽象工廠的結構

抽象工廠模式與工廠方法模式一樣,也是由抽象工廠、具體工廠、抽象產品、具體產品。具體結構如下:

abstractfactory 為抽象工廠,producta 和productb 是抽象產品。concretefactorya和concretefactoryb為具體工廠,concreteproducta 和 concreteproductb 是具體產品。

2、抽象工廠的實現

我們在上次文章的基礎上加以拓展,工廠除了要生產衣服外,還要生產褲子。根據上面我們的描述,這時就適合用抽象工廠模式來實現。我們設計 a 和 b 兩個工廠,a 工廠生產短褲和t恤衫,b 工廠生產牛仔褲和 polo衫。我們對**作以下調整:

//衣服inte***ce clothes //t恤衫class tshirt implements clothes }//polo衫class poloshirt implements clothes }//褲子inte***ce trousers //短褲class short implements trousers }//牛仔褲class jeans implements trousers } inte***ce ifactory class afactory implements ifactory  @override public trousers producetrousers() }class bfactory implements ifactory  @override public trousers producetrousers() }

抽象工廠模式 常用設計模式 抽象工廠模式

提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就是抽象工廠模式,它就是專門用來建立多個產品,也可以說...

抽象工廠模式 抽象工廠模式

抽象工廠模式其實是圍繞了乙個超級工廠建立其他的工廠 可參考工廠模式 這個超級工廠又可以想像成是其他工廠的工廠,這種設計模式是一種建立型模式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指出其類。每個生成的工廠都能按照工廠模式提供物件。意圖提供乙個建立一系列相關或相互依賴物件的介面,...

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...