有點複雜。
一般的工廠模式下,每個實體類都需要乙個對應的工廠,當實體類過多時工廠的數量也會變多。當實體類還有子類時,我們需要的工廠就更多了。
抽象工廠模式是將所有工廠的共性抽象出來
public
inte***ce
animalfactory
// 生產母狗和母貓
public
class
femaleanimalfactory
implements
animalfactory
@override
public animal createcat()
}// 生產公狗和公貓
public
class
maleanimalfactory
implements
animalfactory
@override
public animal createcat()
}
實體類
public
abstract
class
animal
public
abstract
class
catextends
animal
}public
abstract
class
dogextends
animal
}public
class
femalecat
extends
cat}
簡單來說:工廠方法模式的工廠是建立出一種產品,而抽象工廠是建立出一類產品。
產品的繼承結構稱之為產品等級。
所有的貓都是會吃魚的,所以cat實現了eat()方法
具體的工廠是面向多個產品等級結構進行生產。
所以femaleanimalfactory定義了createdog()和createcat()生產母狗和母貓
所以maleanimalfactory定義了createdog()和createcat()生產公狗和共貓找到母工廠就可以建立母貓和母狗,找到公工廠就可以建立公貓和公狗
優點:缺點:
設計模式 建立型 抽象工廠模式
建立性模式有五種 1.工廠模式 簡單工廠模式 經常被用到,不屬於gof23種設計模式 工廠方法模式 抽象工廠模式 2.建造者模式 3.原型模式 4.單例模式 抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客...
設計模式 建立型 抽象工廠
pragma once ifndef abstractfactory h define abstractfactory h 抽象基類abstractproducta,代表產品a 的抽象 class abstractproducta virtual abstractproducta 派生類concre...
建立型設計模式 抽象工廠
抽象工廠模式 abstractfactory 每乙個模式都是針對一定問題的解決方案,工廠方法模式針對的是乙個產品等級結構 而抽象工廠模式針對的是多個產品等級結果。產品族 是指位於不同產品等級結構中,功能相關聯的產品組成的家族。一般是位於不同的等級結構中的相同位置上。每乙個產品等級結構中有多少個具體的...