工厂模式简单代码,
工厂模式Unix系统
。为了给同时讲工厂模式写的范例代码。 /***************************************** *简单工厂模式例子 * 封装一个支持多种 数据库 的访问层操作 * 利用简单工厂模式,达到客户端调用不关心后台数据库类型 * liqinglin@gmail.com 2005.7.7工厂模式简单代码。为了给同时讲工厂模式写的范例代码。
/*****************************************
*简单工厂模式例子
* 封装一个支持多种数据库的访问层操作
* 利用简单工厂模式,达到客户端调用不关心后台数据库类型
*
*/
#include <iostream>
#include
#include
using namespace std;
class DbHelper{
public:
virtual bool createConnect() =0;
virtual bool closeConnect() =0;
};
class MsDbHelper: public DbHelper{//支持MSSQL
public:
MsDbHelper()
{
cout <<"start ms sql"< } bool createConnect(){ cout << "this is MS SQL" << endl; return false; } bool closeConnect(){ return true; } }; class MysqlDbHelper: public DbHelper{//支持MYSQL public: MysqlDbHelper() { cout <<"startmysql"< } 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 原文转自:http://www.ltesting.net