抽象工廠模式可以向客戶端提供乙個介面,使得客戶端在不必指定產品的具體型別的情況下,能夠建立多個產品族的產品物件。抽象工廠模式是所有形態的工廠模式中最為抽象和最其一般性的。
工廠模式只能生產乙個產品。例如:產品要麼香蕉、要麼蘋果,但抽象工廠可以一下生產乙個產品族,如水果、動物、蔬菜等。
1. 抽象工廠(creator)角色
抽象工廠模式的核心,包含對多個產品結構的宣告,任何工廠類都必須實現這個介面。
2. 具體工廠( concrete creator)角色
具體工廠類是抽象工廠的乙個實現,負責例項化某個產品族中的產品物件。
3. 抽象(product)角色
抽象模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。
4. 具體產品(concrete product)角色
抽象模式所建立的具體例項物件
uml類圖如下:
;//抽象產品族tea,茶可以是都勻毛尖、鐵觀音、普洱等品種。
class
tea;
//抽象產品族fruit
class
fruit
;//抽象工廠,宣告具體可以生產的產品族
class
abstractfactory
;//水果族的具體水果
class
:public fruit};
class
bananafruit
:public fruit};
//茶族的具體茶
class
duyuntea
:public tea};
class
puerhtea
:public tea};
//具體工廠,都勻工廠
class
dunyunfactory
:public abstractfactory
fruit*
createfruit()
};//具體工廠,雲南工廠
class
yunnanfactory
:public abstractfactory
fruit*
createfruit()
};intmain()
優點:抽象工廠可以一下生產乙個產品族,是工廠方法模式的延伸,它提供了功能更為強大的工廠類並且具備較好的可擴充套件性;
缺點:
當抽象工廠內確定了能生產的產品後,若要增加產品,必須改動源**,所以抽象工廠模式適用於建立固定、沒有變化的類物件。
1、使用者無需關心物件的建立過程,將物件的建立和使用解耦;
2、產品等級結構穩定,在設計完成之後不會向系統中增加新的產品等級結構或者刪除已有的產品等級結構;
3、系統中有多於乙個的產品族,而每次只使用其中某一產品族。可以通過配置檔案等方式來使使用者能夠動態改變產品族,也可以很方便的增加新的產品族;
面試必備之簡單工廠模式
簡單工廠模式屬於類的建立型模式,又叫做靜態工廠方法模式,但不屬於23種fog設計模式之一。通過專門定義乙個工廠類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。1.工廠 creator 角色 1.簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類可以被外界直接呼叫,建立所需的產品...
工廠模式之抽象工廠
工廠模式之抽象工廠 是一種建立型設計模式,它能建立一系列相關的物件,而無需指定其具體類。類繼承自抽象工廠,即可生產指定物件。新增實體的時候無需修改已有 比如食物這個工廠,在現實世界中,它可以生產麵包 雞蛋 肉等,在魔法世界中,食物工廠可以生產魔法豆 會唱歌的火雞 hp口服液等,我們把食物比作是最大的...
抽象工廠模式 設計模式3之抽象工廠模式
工廠方法模式中工廠只負責同類產品的生產。比如電視機工廠不應該生產汽車。然而現實生活中有很多綜合型的工廠,比如有些電視工廠不僅生產電視機,還會生產與之配套的機頂盒。那麼抽象工廠模式隨之誕生,這種模式將考慮多種型別產品的生產。我們總結下 工廠方法模式只考慮成產同一等級級的產品抽象方法模式考慮生產多等級的...