机房收费系统—抽象工厂+反射+配置文件

        第一次接触 反射+抽象工厂的数据访问程序是在大话设计模式的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

      总结:

      用的还不是很熟练,还在学习中,有不对之处请指出。还在学习中,博客有待改正。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值