如何利用抽象工厂更换数据库

   VS中我们都加入了抽象工厂模式,都懂的这种模式可以用来更换数据库。具体应用起来大家都知道应用反射,首先我介绍下我的情况吧。

   现在的情况是我的D层程序集和命名空间都为DAL,D层的类也都是以Sql为前缀来命名,例如SqlCancelCardDAL,在工厂中,我的代码时这么写的,大家可以看一下:

[vb]  view plain copy
  1. <span style="font-size:18px;">Imports DFactory  
  2. Imports IDAL  
  3. Imports System.Reflection  
  4. Imports System.Configuration  
  5.   
  6. Public Class DataAccess     
  7.     Private ReadOnly assemblyName As String = "DAL"  
  8.     Dim strDB As String = System.Configuration.ConfigurationSettings.AppSettings("DB")  
  9.   
  10.     '返回一个IStudent接口  
  11.     Public Function CheckStuID() As IStudent  
  12.         Dim ClassName As String = assemblyName + "." + strDB + "StuInfoDAL"  
  13.         Return CType(Assembly.Load("DAL").CreateInstance(ClassName), IStudent)  
  14.     End Function  
  15.   
  16.     '返回注册接口IRegist  
  17.     Public Function AboutRegist() As IRegist  
  18.         Dim ClassName As String = assemblyName + "." + strDB + "RegistDAL"  
  19.         Return CType(Assembly.Load("DAL").CreateInstance(ClassName), IRegist)  
  20.     End Function  
  21.   
  22.     '返回充值接口ICharge  
  23.     Public Function InsertInfo() As ICharge  
  24.         Dim ClassName As String = assemblyName + "." + strDB + "ChargeDAL"  
  25.         Return CType(Assembly.Load("DAL").CreateInstance(ClassName), ICharge)  
  26.     End Function  
  27.    ......  
  28.   End Class  
  29. </span>  

App.config中反射为:

[vb]  view plain copy
  1. <add key="DB" value="Sql"/>  
  2. 改变为  
  3. <add key="DB" value="Oracle"/>  

    接着想,我们原来的命名空间跟改变的OracleDAO命名空间完全不一样,看一下原来的工厂代码这样写的:

[vb]  view plain copy
  1. Private ReadOnly assemblyName As String = "DAL"  

    这样就在程序里把命名空间给写死了,但是我们同样可以利用反射的原理将命名空间移动到XML中,不需要打开VS来看,因为我们的运行都是从项目文件中UI层Debug开始的,所以只需在UI\bin\Debug\UI.exe.config中添加一句:

[vb]  view plain copy
  1. <add key="MM" value="OracleDAO"/>  

  同时在工厂层中将写死的命名空间那句改为:

[vb]  view plain copy
  1. Private ReadOnly assemblyName = System.Configuration.ConfigurationSettings.AppSettings("MM")  

   最后一步就是:将每个方法中的return句中“DAL”改为assemblyName即为完美。

   这样我们的程序如何更改数据库只需在配置文件中更改命名空间和反射中类的前缀即可,这样就充分运用了抽象工厂+反射,实现更换数据库的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值