學習難度:※※※※
使用頻率:※※※※※
前面介紹的工廠方法模式中考慮的是一類產品的生產,如:電視機廠只生產電視機、汽車廠只生產汽車同種類稱為同等級,也就是說:
工廠方法模式只考慮生產同等級的產品
,但是在現實生活中許多任務廠是綜合型的工廠,能生產多等級(種類) 的產品,如農場裡既養動物又種植物,電器廠既生產電視機又生產洗衣機或空調,大學既有軟體專業又有生物專業等。
優點:
缺點:當需要建立的物件是一系列相互關聯或相互依賴的產品族時,如電器工廠中的電視機、洗衣機、空調等。
系統中有多個產品族,但每次只使用其中的某一族產品。如有人只喜歡穿某乙個品牌的衣服和鞋。
系統中提供了產品的類庫,且所有產品的介面相同,客戶端不依賴產品例項的建立細節和內部結構。
抽象工廠模式同工廠方法模式一樣,也是由抽象工廠、具體工廠、抽象產品和具體產品等 4抽象工廠模式的主要角色如下。個要素構成,但抽象工廠中方法個數不同,抽象產品的個數也不同。
抽象工廠(abstract factory):提供了建立產品的介面,它包含多個建立產品的方法
newproduct(),可以建立多個不同等級的產品。
具體工廠(concrete factory):主要是實現抽象工廠中的多個抽象方法,完成具體產品的建立
抽象產品(product):定義了產品的規範,描述了產品的主要特性和功能,抽象工廠模式有多個抽象產品。
具體產品(concreteproduct):實現了抽象產品角色所定義的介面,由具體工廠來建立,它同具體工廠之間是多對一的關係。
}//抽象產品:動物類
inte***ce
animal
//抽象產品:植物類
inte***ce
plant
//抽象工廠:農場類
inte***ce
farm
//具體的產品類:馬類
class
horse
implements
animal
}//具體產品:牛類
class
cattle
implements
animal
}//具體的產品類:水果類
class
fruitage
implements
plant
}//具體產品類:蔬菜類
class
vegetables
implements
plant
}//具體工廠:太原農場類
class
tyfarm
implements
farm
@override
public plant newplant()
}//具體工廠:呂梁農場類
class
llfarm
implements
farm
@override
public plant newplant()
}抽象工廠模式的擴充套件有一定的「開閉原則」傾斜性
:
1.當增加乙個新的產品族時只需增加乙個新的具體工廠,不需要修改原**,滿足開閉原則。
2.當產品族中需要增加乙個新種類的產品時,則所有的工廠類都需要進行修改,不滿足開閉原則。
3.當系統中只存在乙個等級結構的產品時,抽象工廠模式將退化到工廠方法模式。
設計模式 工廠模式 抽象工廠模式
建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...
抽象工廠模式 常用設計模式 抽象工廠模式
提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就是抽象工廠模式,它就是專門用來建立多個產品,也可以說...
抽象工廠模式 設計模式(九) 抽象工廠模式
提供乙個為建立一組相關或相互依賴物件的介面,且無須指定它們的具體類。它屬於建立型模式。在抽象工廠模式中,每個具體工廠都提供了多個用於建立多種不同型別具體物件的方法,這些不同型別的物件都存在乙個共同的屬性,構成乙個族。上篇文章設計模式 八 工廠方法模式說到工廠方法模式中只考慮某一類產品的生產,例如可樂...