机房重构总结1

机房重构也进行一段时间了,有必要总结一下了。

机房重构的第一步就是七层登录,七层登录我用的是C#实现的。

不管做什么项目首先就是要理清思路,实现七层登录当然也是,首先我们要看图。

机房重构总结1_第1张图片


这里的七层是在三层的基础上与设计模式相结合演化而来的,应用了设计模式中的外观模式和抽象工厂模式。

1、IDAL:接口层用来定义一个统一的接口,解除B层和D层的耦合。

2、Factory:工厂来创建接口,返回接口,用到了抽象工厂+反射+配置文件,作用是灵活的实现数据库的连接,方便换数据库,进一步解耦合。

3、BLL:主要负责一些逻辑判断和处理。

4、Facade:这里用到了外观模式,使得复杂问题简单化,用外观模式定义系统中每一层的入口,层与层之间不直接产生联系,而通过外观类建立联系,降低层之间的耦合度。

5、UI:主要职责是为用户提供信息,以及把用户的指令进行翻译。

6、Entity:实体层,存放全局的实体类,方便各个层之前的参数调用。

7、DAL:数据访问层所做事务直接操作数据库,针对数据的增添、删除、修改、查找。无需做什么逻辑判断,只是和数据库直接交互。


展示一下部分代码:

Factory层:

Imports System.Reflection  
Imports IDAL  
Imports System.Data  
Imports System.Configuration  
Public Class LoginFactory     
    Dim strDB As String = System.Configuration.ConfigurationSettings.AppSettings("DBString")  
  
    Dim strQueryWorkLog As String = System.Configuration.ConfigurationSettings.AppSettings("DBStrQueryWorkLog")  
      
    Public Function CreateUser() As IDAL.IUser  
        Return CType(Assembly.Load("DAL").CreateInstance("DAL.LoginDAL"), IDAL.IUser)  
    End Function  
  
    Public Function SaveWorkLog() As IDAL.IWorklog  
        Return CType(Assembly.Load("DAL").CreateInstance("DAL.WorklogDAL"), IDAL.IWorklog)  
    End Function      
End Class  

DAL层:

Imports System.Data.SqlClient  
Imports IDAL  
  
Public Class LoginDAL : Implements IDAL.IUser    
    Public Function IDALUser(User As Entity.UserEntity) As DataTable Implements IDAL.IUser.IDALUser  
        Dim SqlParams As SqlParameter() = {New SqlParameter("@UserID", User.UserID), New SqlParameter("@passWord", User.Password)}  
        Dim Sql As String = "select * from User_Info where userID=@userID and passWord=@passWord"  
        'Dim cmdText As String = "pro_selectUser"  
        Dim SqlHelperObject As New SqlHelper.LoginSqlHelper  
     
        Dim cmdType As CommandType = New CommandType()  
  
  
        Dim table As New DataTable
  
        table = SqlHelperObject.Execute(Sql, cmdType, SqlParams)  
  
        Return table
    End Function
Imports System.Data.SqlClient  
Imports IDAL  
Public Class WorklogDAL : Implements IDAL.IWorklog  
  
    Public Function SaveWorklog(worklog As Entity.WorklogEntity) As Boolean Implements IDAL.IWorklog.SaveWorklog  
        Dim Sql As String = "INSERT INTO Worklog_Info (UserID,loginDateTime,Computer) VALUES (@UserID,@loginDateTime,@Computer)"  
        Dim SqlParams As SqlParameter() = {New SqlParameter("@UserID", worklog.UserID),  
                                          New SqlParameter("@loginDateTime", worklog.loginDateTime),  
                                          New SqlParameter("@Computer", worklog.Computer)}  
        Dim cmdType As CommandType = CommandType.Text  
        Dim SqlHelperObject As New SqlHelper.LoginSqlHelper  
        Return SqlHelperObject.ExecuteQuery(Sql, cmdType, SqlParams)  
  
    End Function  
End Class  



 



你可能感兴趣的:(机房重构总结1)