• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 工廠模式

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    工廠模式簡單代碼。為了給同時講工廠模式寫的范例代碼。 /***************************************** *簡單工廠模式例子 * 封裝一個支持多種 數據庫 的訪問層操作 * 利用簡單工廠模式,達到客戶端調用不關心后臺數據庫類型 * liqinglin@gmail.com 2005.7.7

    工廠模式簡單代碼。為了給同時講工廠模式寫的范例代碼。

    /*****************************************
     *簡單工廠模式例子
     * 封裝一個支持多種數據庫的訪問層操作
     * 利用簡單工廠模式,達到客戶端調用不關心后臺數據庫類型
     * <liqinglin@gmail.com> 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

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>