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

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

      总结:

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




你可能感兴趣的:(VB.NET)