設計模式 抽象工廠模式

2021-10-24 14:05:08 字數 2129 閱讀 8733

學習難度:※※※※

使用頻率:※※※※※

前面介紹的工廠方法模式中考慮的是一類產品的生產,如:電視機廠只生產電視機、汽車廠只生產汽車

同種類稱為同等級,也就是說:工廠方法模式只考慮生產同等級的產品,但是在現實生活中許多任務廠是綜合型的工廠,能生產多等級(種類) 的產品,如農場裡既養動物又種植物,電器廠既生產電視機又生產洗衣機或空調,大學既有軟體專業又有生物專業等。

優點:

缺點:當需要建立的物件是一系列相互關聯或相互依賴的產品族時,如電器工廠中的電視機、洗衣機、空調等。

系統中有多個產品族,但每次只使用其中的某一族產品。如有人只喜歡穿某乙個品牌的衣服和鞋。

系統中提供了產品的類庫,且所有產品的介面相同,客戶端不依賴產品例項的建立細節和內部結構。

抽象工廠模式同工廠方法模式一樣,也是由抽象工廠、具體工廠、抽象產品和具體產品等 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 使用,建立...

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

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

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

提供乙個為建立一組相關或相互依賴物件的介面,且無須指定它們的具體類。它屬於建立型模式。在抽象工廠模式中,每個具體工廠都提供了多個用於建立多種不同型別具體物件的方法,這些不同型別的物件都存在乙個共同的屬性,構成乙個族。上篇文章設計模式 八 工廠方法模式說到工廠方法模式中只考慮某一類產品的生產,例如可樂...