設計模式之抽象工廠模式學習

2021-06-06 12:51:08 字數 1554 閱讀 6663

抽象工廠模式:提供了乙個建立一系列相關或相互依賴物件的介面,而無需指定它們的具體的類。它用於解決涉及多個產品系列的問題,包含所有產品的建立方法。

abstractproducta和

abstractproductb

是兩個抽象的產品,之所以稱之為抽象就是因為它們可以有兩種不同的實現,

productaa1,producta2,

和productb1,productb2

就是他它們的具體實現。就像**中的

user

和department

表,派生了

accessuser

和accessdepartment

以及sqluser

和sqldeparment。

ifactory是抽象工廠介面,它包含所有產品建立方法的抽象方法。

concretfactory1

和concretefactory2

就是具體的抽象工廠。就像

accessfactory

和sqlfactroy

#includeusing namespace std;

class user

virtual void insert()=0;

virtual void get()=0; };

class accessuser:public user

virtual void insert()

通常在執行時建立具體的工廠,根據這個工廠在建立不同的產品物件。

抽象工廠的好處是,一:易於更換產品,由於具體的工廠如ifactory *factory=new accessfactory;

僅僅在初始化的時候出現一次,就使得改變具體的抽象工廠非常容易。二:讓具體的例項建立過程與客戶端分離,客戶端通過抽象介面操縱例項,產品的具體類也被具體模式的實現分離,不會出現在客戶**中。

缺點:抽象工廠可以很方便的切換兩個資料庫,但是當需求增加時如需要增加project

表時就需要改動三個類,即

ifactory

,accessfactory,sqlfacroy

另外還得增加三個類。還有,訪問資料庫的客戶端**很可能有多處,更換資料庫時需要修改每一處,這仍然很不方便。程式設計是一門藝術,這樣大批量的改動顯然是醜陋的做法。

使用簡單工廠改進抽象工廠

class dataaccess

user*createuser()

break;

case 2:

break;

default:

break;

} }department*createdepartment()

break;

case 2:

break;

default:

break;

} }};int main(int argc,char**argv)

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

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

設計模式學習之抽象工廠

tbase為抽象 tconcreate為具體.template class cconcretefactory 抽象工廠 註冊自己的工廠由使用者自己完成 物件的釋放由建立者自己維護 template class cbasefactory cbasefactory cbasefactory const ...

設計模式之抽象工廠模式

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