机房收费系统—抽象工厂+反射+配置文件
发布时间:2020-12-17 07:55:03 所属栏目:百科 来源:网络整理
导读:第一次接触 反射+抽象工厂的数据访问程序是在大话设计模式的154页,反射+配置文件实现数据访问程序是在大话设计的157页,而我第一次使用配置文件+反射+抽象工厂就是在机房收费系统个人重构。 大鸟说过:反射技术用来去除switch或if,解除分之判断带来的耦合
第一次接触 反射+抽象工厂的数据访问程序是在大话设计模式的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 总结: 用的还不是很熟练,还在学习中,有不对之处请指出。还在学习中,博客有待改正。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 【XML】标准化DTD与Schema
- 总结易语言节点与栈的操作方法
- PostgreSQL、Greenplum 日常监控 和 维护任务
- React Native之React Navigation导航器
- ruby – 没有从nil到integer的隐式转换 – 当尝试添加任何数
- 在XML字符串中看到<?var type =“string”?>,但这是什么
- reactjs – Jest with create-react-app – 意外的令牌错误
- c# – Selenium Wait不等待Element可点击
- c# – 在.Net Core 2.1中的XUnit单元测试中注册AutoMapper
- 探讨Ajax中同步与异步之间的区别