如何利用抽象工廠更換資料庫

來源:互聯網
上載者:User

   VS中我們都加入了抽象原廠模式,都懂的這種模式可以用來更換資料庫。具體應用起來大家都知道應用反射,首先我介紹下我的情況吧。

   現在的情況是我的D層程式集和命名空間都為DAL,D層的類也都是以Sql為首碼來命名,例如SqlCancelCardDAL,在工廠中,My Code時這麼寫的,大家可以看一下:

Imports DFactoryImports IDALImports System.ReflectionImports System.ConfigurationPublic Class DataAccess       Private ReadOnly assemblyName As String = "DAL"    Dim strDB As String = System.Configuration.ConfigurationSettings.AppSettings("DB")    '返回一個IStudent介面    Public Function CheckStuID() As IStudent        Dim ClassName As String = assemblyName + "." + strDB + "StuInfoDAL"        Return CType(Assembly.Load("DAL").CreateInstance(ClassName), IStudent)    End Function    '返回註冊介面IRegist    Public Function AboutRegist() As IRegist        Dim ClassName As String = assemblyName + "." + strDB + "RegistDAL"        Return CType(Assembly.Load("DAL").CreateInstance(ClassName), IRegist)    End Function    '返回儲值介面ICharge    Public Function InsertInfo() As ICharge        Dim ClassName As String = assemblyName + "." + strDB + "ChargeDAL"        Return CType(Assembly.Load("DAL").CreateInstance(ClassName), ICharge)    End Function   ......  End Class


App.config中反射為:

<add key="DB" value="Sql"/>改變為<add key="DB" value="Oracle"/>


    接著想,我們原來的命名空間跟改變的OracleDAO命名空間完全不一樣,看一下原來的工廠代碼這樣寫的:

 Private ReadOnly assemblyName As String = "DAL"


    這樣就在程式裡把命名空間給寫死了,但是我們同樣可以利用反射的原理將命名空間移動到XML中,不需要開啟VS來看,因為我們的運行都是從專案檔中UI層Debug開始的,所以只需在UI\bin\Debug\UI.exe.config中添加一句:

<add key="MM" value="OracleDAO"/>


  同時在工廠層中將寫死的命名空間那句改為:

 Private ReadOnly assemblyName = System.Configuration.ConfigurationSettings.AppSettings("MM")


   最後一步就是:將每個方法中的return句中“DAL”改為assemblyName即為完美。

   這樣我們的程式如何更改資料庫只需在設定檔中更改命名空間和反射中類的首碼即可,這樣就充分運用了抽象工廠+反射,實現更換資料庫的功能。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.