定義
抽象工廠模式定義:
提供一個創建一系列相關或相關依賴對象的接口,而無需指定他們具體的類
抽象工廠模式通常是用于創建一族產品,并且這族產品分不同的等級;不同的具體工廠類生產不同等級的一族產品
比如下圖(來源于網絡)
兩廂車和三廂車稱為兩個不同的等級結構;2.0排量兩廂車和2.0排量三廂車成為同一個產品族。
與工廠方法模式的區別
工廠的產品全部屬于同一個等級結構,則屬于工廠方法模式;如果工廠的產品來自多個等級結構,則屬于抽象工廠模式
模式結構
下圖來源于網絡
AbstractFactory:是一個抽象工廠,包含所有產品創建的的抽象方法
ProductA和我ProductB: 是抽象產品,之所以抽象,是因為有兩種不同的實現
代碼實現
場景: ?sqlServer數據庫中有兩User表和Department表, 由于客戶需求,需要把sqlServer數據庫換成Access數據庫
場景分析:?User相當于抽象產品ProductA,?sqlServer數據庫的User相當于ProductA1
點擊下載代碼: 抽象模式實現
點擊下載代碼: 簡單工廠+反射+配置文件
特點及使用場景
優點: ?在類內部對產品族的關聯關系進行定義和描述,而不必專門引入一個新的類來進行管理
缺點: ?擴展困難,產品族中需要增加一個新的產品,則幾乎所有的工廠類都需要進行修改
使用場景: ?就是一個繼承體系中,如果存在著多個等級結構(即存在著多個抽象類),
? ? ? ? ? ? ? 并且分屬各個等級結構中的實現類之間存在著一定的關聯或者約束,就可以使用抽象工廠模式