工廠模式簡單代碼。為了給同時講工廠模式寫的范例代碼。
/*****************************************
*簡單工廠模式例子
* 封裝一個支持多種數據庫的訪問層操作
* 利用簡單工廠模式,達到客戶端調用不關心後台數據庫類型
* <[email protected]> 2005.7.7
*/
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
class DbHelper{
public:
virtual bool createConnect() =0;
virtual bool closeConnect() =0;
};
class MsDbHelper: public DbHelper{//支持MS SQL
public:
MsDbHelper()
{
cout <<"start ms sql"<<endl;
}
bool createConnect(){
cout << "this is MS SQL" << endl;
return false;
}
bool closeConnect(){
return true;
}
};
class MysqlDbHelper: public DbHelper{//支持MYSQL
public:
MysqlDbHelper()
{
cout <<"start mysql"<<endl;
}
bool createConnect(){
cout << "this is Mysql" << endl;
return false;
}
bool closeConnect(){
return true;
}
};
class Factory{
public:
DbHelper* creator(int flag)//flag更通用的做法是從XML配置文件中來讀取
{
if(flag==1)
return new MsDbHelper();
else if(flag==2)
return new MysqlDbHelper();
}
};
void testIt(DbHelper *hd)
{
hd->createConnect();
}
int main(int argc,char **argv)
{
Factory fy;
DbHelper *hd=fy.creator(2);
testIt(hd);
exit(0);
}
運行結果:
[root@stone pattern]# ./factory
start mysql
this is Mysql