單系統多類型資料來源隨意切換的c#實現

來源:互聯網
上載者:User

【原創作者】:叢興滋(cncxz)[E-mail:cncxz@126.com]
【關 鍵 詞】:SQL  XML  Access  C#  切換

    假設你要做個會員管理系統,分為SQL、XML和Access三種版本,希望通過修改設定檔中一個參數來完成版本切換,而目前你又對這種切換的實現存有疑惑,建議你繼續閱讀,本文說明了“一個介面、三個實現、一個代理類結合設定檔實現SQL、XML、Access資料來源切換”的一種方法。

下面以會員管理系統的單位管理為例,說一下這種方法:

1、首先定義一個介面IDeptManage,代碼如下:

//介面IDeptManage
public interface IDeptManage{

 void ItemCreate(string strGuid,string strShortName,string strFullName,string strParentGuid); 

 void ItemRemove(string strGuid);

 void ItemUpdate(string strGuid,string strShortName,string strFullName);

 string test();//測試用
}

2、然後寫三個互相獨立的實作類別,DeptManage_Sql、DeptManage_Xml、DeptManage_Access,代碼如下:

//類DeptManage_Sql,用SQL的實現
public class DeptManage_Sql:IDeptManage
 {
  public void ItemCreate(string strGuid,string strShortName,string strFullName,string strParentGuid){

  }
  public void ItemRemove(string strGuid){

  }
  public void ItemUpdate(string strGuid,string strShortName,string strFullName){

  }

  public string test()
  {
   return "這個是用SQL實現的";
  }

 }

//類DeptManage_Xml,用XML的實現
public class DeptManage_Xml:IDeptManage
 {
  public void ItemCreate(string strGuid,string strShortName,string strFullName,string strParentGuid){

  }
  public void ItemRemove(string strGuid){

  }
  public void ItemUpdate(string strGuid,string strShortName,string strFullName){

  }

  public string test()
  {
   return "這個是用XML實現的";
  }

 }

//類DeptManage_Access,用Access的實現
public class DeptManage_Access:IDeptManage
 {
  public void ItemCreate(string strGuid,string strShortName,string strFullName,string strParentGuid){

  }
  public void ItemRemove(string strGuid){

  }
  public void ItemUpdate(string strGuid,string strShortName,string strFullName){

  }

  public string test()
  {
   return "這個是用Access實現的";
  }

 }

    以前的時候,都是用 IDeptManage myClass=new DeptManage_Sql()跟IDeptManage myClass=new DeptManage_Xml()來實現調用,這在使用中似乎也沒有什麼不妥,可是一旦需要切換(假設要把Sql的換成Xml),就麻煩了,需要到處修改代碼,現在我要做的就是把這些在切換時需要調整的部分集中起來,達到簡單地調整一處代碼就完成切換工作的目的。

3、其實實現起來非常簡單,只要在調用者和調用源中間補上一個中介人實現解耦就可以了,這裡定義一個名為Agent的代理類,代碼如下:

public class Agent
 {
  static int DataType=0;  //資料庫類型[0為SQL、1為XML、2為Access]

  public static IDeptManage CreateDeptMange(){
   IDeptManage myClass;
   switch (DataType){
    case 0:
     myClass=new DeptManage_Sql();
     break;
    case 1:
     myClass=new DeptManage_Xml();
     break;

    case 2:
     myClass=new DeptManage_Access();
     break;
    default:
     myClass=new DeptManage_Sql();
     break;
   }
   return myClass;
  }

 }

    以後調用的時候改用IDeptManage myManage= Agent.CreateDeptMange()就可以了,想切換的時候修改Agent類中的DataType即可。

    修改DataType值,通過調用 myManage.test()可以查看當前使用的哪個實作類別,把Agent類調整一下,從web.config裡讀DataType值,最終就通過一個介面、三個實現、一個代理類結合設定檔實現了SQL、XML、Access資料來源的切換,這裡不寫了,你自己來吧   

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.