第一次接触 反射+抽象工厂的数据访问程序是在大话设计模式的154页,反射+配置文件实现数据访问程序是在大话设计的157页,而我第一次使用配置文件+反射+抽象工厂就是在机房收费系统个人重构。
大鸟说过:反射技术用来去除switch或if,解除分之判断带来的耦合,switch或者if虽然是程序里的好东西,但是应对变化却显的老态龙钟,而反射技术却可以很好的解决他们难以应对变化、难以维护和扩展的诟病。
而配置文件的好处就是解决更改数据库的问题,只要在配置文件里写明是DataAccess还是sqlServer,这样就不用去更改类了。
下面就以机房收费系统的登陆为例子,来介绍一下。
配置文件:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <appSettings> <add key ="conn" value ="Server=192.168.24.167;Database=mycharge;User ID=sa;Password=123456"/> <add key="DB" value ="sqlserver"/> </appSettings> </configuration>
工厂层代码:
’**************************************************** ’文件名:Login_FA '命名空间:Factory '内容:读取配置文件给DB字符串赋值,在配置文件中写明是sqlServer还是DataAccess.这样就不用去更改类了。 '功能:反射+配置文件+抽象工厂 ’文件关系: ’作者:赵亚盟 ’小组:XXX ’生成日期:2014-06-29 16:25:27 ’版本号:V1.0.0.0 ’修改日志: ’版本说明: ’**************************************************** Imports System.Reflection '添加反射的引用 Imports System.Configuration '添加配置文件的引用 Imports IDAL 'Factory层调用IDAL层 Public Class sqlServer Private Shared ReadOnly AssemblyName As String = "DAL" '定义程序集变量名,D层命名空间的名字 Private Shared db As String = ConfigurationManager.AppSettings("DB") '表示读取配置文件 ' ///depiction创建用户表的工厂 Public Function CreateUser() As IDAL.IUser Dim className As String = AssemblyName + "." + db + "User_DAL" 'DAL 中的类名 Dim iuser As IUser '实例化接口IUser '通过调用接口类中的函数去调用D层中实现该接口的函数。 iuser = CType(Assembly.Load(AssemblyName).CreateInstance(className),IUser) Return iuser End Function End Class
总结:
用的还不是很熟练,还在学习中,有不对之处请指出。还在学习中,博客有待改正。
原文链接:https://www.f2er.com/vb/257968.html