設計模式之抽象工廠模式

2021-09-24 16:35:54 字數 976 閱讀 7456

不同產品等級結構,功能相關聯的產品組成的家族

例如:用不同資料庫訪問不同表

產品族:學生表、課程表

等級結構:sqlserver、access、sql

定義:提供乙個建立一系列相關或依賴物件的介面(抽象工廠角色),而無需指定它們具體的類(產品類)

抽象工廠是指乙個工廠等級結構可以建立出分屬於不同產品等級結構的乙個產品族的所有物件。

抽象工廠模式是工廠方法模式的推廣,將工廠方法模式為一類物件提供建立介面,轉化為為建立一組(有多類)相關或依賴的物件建立介面。

抽象工廠(abstract factory)角色:擔任這個角色的是工廠方法模式的核心,它是與應用系統商業邏輯無關的。

具體工廠(concrete factory)角色:這個角色直接在客戶端的呼叫下建立產品的例項。這個角色含有選擇合適的產品物件的邏輯,而這個邏輯是與應用系統的商業邏輯緊密相關的。

抽象產品(abstract product)角色:擔任這個角色的類是工廠方法模式所建立的物件的父類,或它們共同擁有的介面。

具體產品(concrete product)角色:抽象工廠模式所建立的任何產品物件都是某乙個具體產品類的例項。這是客戶端最終需要的東西,其內部一定充滿了應用系統的商業邏輯。

選擇產品族的實現

希望乙個系統不依賴於產品類例項如何被建立、組合、表達細節時(客戶端不知道產品類如何建立、組合、表達)

乙個系統有多於乙個的產品族,而系統只消費其中某一產品族。

抽象工廠模式以一種傾斜方式支援增加新的產品,為新產品族的增加方便,但是不能為新產品等級結構的增加提供方便。

優點:新產品族的增加方便,符合"開閉」原則

缺點:不能為新產品等級結構的增加提供方便。

抽象工廠模式 設計模式3之抽象工廠模式

工廠方法模式中工廠只負責同類產品的生產。比如電視機工廠不應該生產汽車。然而現實生活中有很多綜合型的工廠,比如有些電視工廠不僅生產電視機,還會生產與之配套的機頂盒。那麼抽象工廠模式隨之誕生,這種模式將考慮多種型別產品的生產。我們總結下 工廠方法模式只考慮成產同一等級級的產品抽象方法模式考慮生產多等級的...

設計模式之抽象工廠模式

目標 定義了乙個建立一系列相關或相互依賴的介面,而無需指定它們的具體類。用於交換產品系列,如 access sql server 產品的具體類名被具體工廠的實現分離 下面是示例 include include include using namespace std 使用者抽象介面 class ius...

設計模式之抽象工廠模式

定義 abstract factory,提供乙個建立一系列相關或相互依賴物件的介面,而無需制定它們具體的類 場景 有一家生產螺絲螺帽的工廠,螺絲有兩種型號 公的和母的,螺帽也有兩種型號 公的和母的。沒個車間只生產一種螺絲和螺帽。這裡車間就是乙個concretefactory 具體工廠 螺絲和螺帽便是...