抽象基類:
1)producta,productb:分別代表不同型別的產品,而它們的派生類則是這種產品的乙個實現.
2)abstractfactory:生產這一系列產品的乙個抽象工廠,它的派生類是不同的實現.
介面函式:
1)abstractfactory::createproducta 和abstractfactory::createproductb:分別是生產不同產品的不同的實現,由各個派生出來的抽象工廠實現之.
解析:abstract factory模式和factory最大的差別就是抽象工廠建立的是一系列相關的物件,其中建立的實現其實採用的就是factory模式的方法,對於某個實現的有乙個派生出來的抽象工廠,另乙個實現有另乙個派生出來的工廠,等等.
可以舉乙個簡單的例子來解釋這個模式:比如,同樣是雞腿(producta)和漢堡(prod
uctb),它們都可以有商店**(abstractfactory),但是有不同的實現,有肯德基(c
oncreatefactoryl)和麥當勞(concreatefactory2)兩家生產出來的不同風味的雞腿和漢堡(也就是producta和productb的不同實現),而負責生產漢堡和雞腿的就是之前提過的factory模式了.
抽象工廠需要特別注意的地方就是區分不同型別的產品和這些產品的不同實現.顯而易見的,如果有n種產品同時有m中不同的實現,那麼根據乘法原理可知有n*m個factory模式的使用.
//abstract_factory.cpp
#includeusing namespace std;
//抽象基類abstractproducta,代表產品a的抽象
class abstractproducta
virtual ~abstractproducta(){}
};//派生類concreateproductal,繼承自abstractproducta,代表產品a的第一種實現
class concreateproducta1:public abstractproducta
設計模式 工廠模式 抽象工廠模式
建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...
抽象工廠模式 常用設計模式 抽象工廠模式
提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就是抽象工廠模式,它就是專門用來建立多個產品,也可以說...
抽象工廠模式 設計模式(九) 抽象工廠模式
提供乙個為建立一組相關或相互依賴物件的介面,且無須指定它們的具體類。它屬於建立型模式。在抽象工廠模式中,每個具體工廠都提供了多個用於建立多種不同型別具體物件的方法,這些不同型別的物件都存在乙個共同的屬性,構成乙個族。上篇文章設計模式 八 工廠方法模式說到工廠方法模式中只考慮某一類產品的生產,例如可樂...