C 設計者模式 抽象工廠

2021-10-03 12:49:51 字數 2274 閱讀 2676

前半句話可以這樣理解:oracle資料庫,和oracle命令相依賴;mysql資料庫和mysql命令相互依賴;如果oracle資料庫使用mysql命令,可能就會報錯;

後半句話:除了有o染成了資料庫,還可能有mysql資料庫,還可以有其他的資料庫;

抽象工廠模式是特殊的工廠模式;

**如下:

產品product實現方式和工廠模式是一模一樣的;

主要區別在與工廠方法的實現:抽象工廠方法和工廠方法的區別會在**裡說明;

abtractproductb;

command.h

#pragma once

#includeusing namespace std;

//abtractproductb

class idbcommand

;//productb1

class mysqlcommand:public idbcommand

};//productb2

class oraclecommand :public idbcommand

};//

abstractproducta:

#pragma once

#includeusing namespace std;

//連線介面,abstractproducta

class idbconnection

;//sqlserverdbconnection——producta1;

class sqlserverdbconnection:public idbconnection

};//oracleserverdbconnection——producta2

class oracleserverdbconnection :public idbconnection

};

#pragma once

#include"command.h"

#include"connection.h"

/*工廠模式下

class idbconnectionfactory

;class idbcommandfactory

;class mysqlconnectionfactory :public idbconnectionfactory

};class oracleconnectionfactory :public idbconnectionfactory

};*/

//abstractfactory

class idbfactory

;//concretefactory1

class mysqlfactory:public idbfactory

idbcommand* createdbcommand() };

//concretefactory2

class oraclefactory :public idbfactory

idbcommand* createdbcommand()

};

客戶端:需要new 物件的程式

#pragma once

#include#include"dbfactory.h"

class employeedad

/* 在工廠模式,如果是乙個系列有關聯的產品,那建構函式這裡就有可能是乙個傳入sqlconnectionfactory,

oraclecommandfactory;那在getemployes中就會出現連線的時候mysql,但是命令執行的缺失oracle,那麼sql語言可能會報錯

所以需要將倆個操作放在乙個工廠中

employeedad(idbconnectionfactory* lpconnectionfactory, idbcommandfactory* lpcommandfactory)

*/public:

void getemployes()

/*//工廠模式下

void getemployes()

*/private:

idbfactory* m_lpfactory;

vectorm_vecemploy;

/*工廠模式下

idbconnectionfactory* m_lpconnectionfactory;

idbcommandfactory* m_lpcommandfactory;

*/};

測試程式:

#include"employeedab.h"

int main()

c 設計者模式 工廠模式

1 面向介面程式設計 最簡單的表現形式是,你的變數要宣告成抽象基類 2 為什麼要實現面向介面程式設計 設計原則 依賴倒置原則 應該依賴抽象而不是細節。3 抽象基類是不能建立的,不能new的。4 建立物件的方法 除了在棧上 或者是在堆上建立物件,也可以通過方法返回物件。5 虛函式 執行時的依賴 模式定...

01設計者模式 簡單工廠模式

簡單工廠模式 解決問題 簡單工廠模式解決的問題是去例項化物件的問題,假如將來要增加例項化物件,我們可以通過工廠來輔助我們建立物件,從而達到 松耦合的問題.工廠可以通過客戶端傳過來的引數來例項化不同的物件.需求 我們需要做幾個簡單的計算器,需要把客戶端傳過來的兩個數字進行運算 v1版本為簡單工廠模式 ...

設計者模式

1.單例模式 每個new出來的例項都需要有乙個相同的方法,但是這時候如果 每個例項都新建乙個這種方法,太佔據記憶體也太慢,所以在這裡有乙個重要的判斷 如果有例項,則返回例項 如果沒有例項,則建立例項,並且返回例項。例 class createuser return createuser.ins co...