前半句話可以這樣理解: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...