机房收费系统重构(二)—菜鸟入门

  上篇文章中简单的说了说关于三层和实体层的理解,最后那个简单的登录窗体实现了,后面开始问大神们该怎么办了,说到画图,类图,包图,时序图,关于画图的我在这里就不多讲了,大家可以按照业务功能来画,也可以按照用户来画,但是我还是习惯按照功能窗体!下面附上一张包图用来镇楼吧!

  

  下面来讲讲关于图中外观类和反射+工厂的理解和认识吧!

  谈到这,我们来说说这个外观类吧,设计模式我们刚刚学过,外观类就是为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。这是外观的定义,当自己读完这句话的时候我一点头绪都没有,也许这就是所谓的不会举一反三吧,我看看了上面的包图,将外观加在了UI和BLL中间,大家都知道三层之间就是要减少耦合,外观类就是要减少UI和BLL的耦合,在操作中,BLL有的时候要调用UI中的类,但是这样的操作比较复杂,这样提供一个外观类,不需要管这些操作有多复杂,只需调用这个接口就可以了!

  关于反射+工厂的理解,如图所示,在BLL和DAL之间加了一个IDAL的接口,减少BLL和DAL的耦合性!接口中包含具体的类的所有方法,当BLL与DAL建立联系的时候我们只需要调用接口就可以了,前提是必须把接口和具体类接通,事实上,接口和具体类之间的关系知识两者之间创建了一条通道,接口中没有具体的功能,但是有那个类使用的一个方法,所以使用接口让接口与具体类进行互通,引用和创建实例!

  具体过程先引用了反射,然后创建接口,在通过反射,把DAL层具体类的实例反射给接口。看到这句话有点绕口呢。最后结果就是接口与具体类,可以使用接口中具体类的方法了!

Imports System.Reflection '添加反射的引用
Imports System.Configuration '添加配置文件的引用
Imports IDAL
Public Class LoginFactory
    '利用反射+配置文件+抽象工厂
    Dim strDB As String = System.Configuration.ConfigurationSettings.AppSettings("strSqlConnection")
    '表示读取配置文件,如果配置文件中是SQLserver数据库就访问,如果是别的就放访问别的,不需要更改代码
    Dim strQueryWorkLog As String = System.Configuration.ConfigurationSettings.AppSettings("strSqlConnection")
    '创建用户表工厂
    Public Function CreateUserInfo() As ILogin
        Return CType(Assembly.Load("DAL").CreateInstance("DAL" & "." & "LoginDAL"), ILogin)
    End Function
    Public Function CreateWorklog() As IWorkLogin
        Return CType(Assembly.Load("DAL").CreateInstance("DAL" & "." & "WorkLogin"), IWorkLogin)
    End Function
    Public Function CreadteStudentInfo() As IRecharge
        Return CType(Assembly.Load("DAL").CreateInstance("DAL" & "." & "RechargeDAL"), IRecharge)
    End Function
End Class

  把DAL层里面的类反射到BLL层里面,也就相当于在BLL层里面生产了DAL层的类,然后反射得到具体类,抽象出一个层,就是Factory,只要BLL引用工厂,便可以通过工厂返回具体类了!这是我代码七层的部分:

这些关系虽然复杂,但是在我们今后机房收费编写的过程中会渐渐理解的!  

今天只是浅显的说了自己对于外观和反射+工厂的了解!希望大家能够给我提点建议,能够更好的理解这部分内容!

原文地址:https://www.cnblogs.com/xzpblog/p/5117984.html