三层架构之抽象工厂加反射


简单三层

界面层

[vb]  view plain copy print ?
  1. Public Class Login  
  2.     Private Sub btnLogin_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles btnLogin.Click  
  3.         Dim LUser As New Entity.User  
  4.         Dim BCheck As New Bll.BllLogin  
  5.         LUser.User_Id = txtUserId.Text  
  6.         LUser.User_Pwd = txtPwd.Text  
  7.         If BCheck.Check(LUser) = True Then  
  8.             MsgBox("登录成功!")  
  9.         Else  
  10.             MsgBox("登录失败!")  
  11.         End If  
  12.     End Sub  
  13.     Private Sub btnCancle_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles btnCancle.Click  
  14.         End  
  15.     End Sub  
  16. End Class  


BLL层

[vb]  view plain copy print ?
  1. Public Class BllLogin  
  2.     Function Check(ByVal User As Entity.User) As Boolean  
  3.         Dim DaUser As New DAL.DalUserInfo  
  4.         Dim BlUser As New Entity.User  
  5.         BlUser.User_Id = User.User_Id  
  6.         BlUser = DaUser.Check(BlUser)  
  7.         If BlUser.User_Pwd = User.User_Pwd Then  
  8.             Return True  
  9.         Else  
  10.             Return False  
  11.         End If  
  12.     End Function  
  13. End Class  


DAL层

[vb]  view plain copy print ?
  1. Imports System.Data.SqlClient  
  2. Public Class DalUserInfo  
  3.     Dim ConnStr As String = "Data Source=192.168.24.186;Initial Catalog=Student;User ID=sa;Pwd=123456"  
  4.     Dim conn As SqlConnection = New SqlConnection(ConnStr)  
  5.     Function Check(ByVal User As Entity.User) As Entity.User  
  6.         Dim sql As String = "select * from UserInfo where User_ID='" & User.User_Id + "'"  
  7.         Dim cmd As SqlCommand = New SqlCommand(sql, conn)  
  8.         Dim read As SqlDataReader  
  9.         Try  
  10.             conn.Open()  
  11.             read = cmd.ExecuteReader  
  12.             read.Read()  
  13.             User.User_Id = read.Item("User_ID")  
  14.             User.User_Pwd = read.Item("User_Pwd")  
  15.             Return User  
  16.         Catch ex As Exception  
  17.             User.User_Pwd = ""  
  18.             Return User  
  19.         End Try  
  20.     End Function  
  21. End Class  


实体层

[vb]  view plain copy print ?
  1. Public Class User  
  2.     Private userId As String  
  3.     Private userPwd As String  
  4.     Public Property User_Id() As String  
  5.         Get  
  6.             Return userId  
  7.         End Get  
  8.         Set(ByVal value As String)  
  9.             userId = value  
  10.         End Set  
  11.     End Property  
  12.     Public Property User_Pwd() As String  
  13.         Get  
  14.             Return userPwd  
  15.         End Get  
  16.         Set(ByVal value As String)  
  17.             userPwd = value  
  18.         End Set  
  19.     End Property  
  20. End Class  


三层+简单工厂

界面层代码不变

Bll层

[vb]  view plain copy print ?
  1. Public Class BllLogin  
  2.     Function Check(ByVal User As Entity.User) As Boolean  
  3.         Dim DalFactory As New DAL.DFactory  
  4.         Dim BlUser As New Entity.User  
  5.         BlUser.User_Id = User.User_Id  
  6.         BlUser = DalFactory.CreateUserInfo.Check(BlUser)  
  7.         If BlUser.User_Pwd = User.User_Pwd Then  
  8.             Return True  
  9.         Else  
  10.             Return False  
  11.         End If  
  12.     End Function  
  13. End Class  


工厂

[vb]  view plain copy print ?
  1. Imports [Interface]  
  2. Public Class DFactory  
  3.     'Dim DataBase As String = "Access"  
  4.     Dim DataBase As String = "Sql"  
  5.     Function CreateUserInfo() As IUserInfo  
  6.         Dim DB As IUserInfo  
  7.         Select Case DataBase  
  8.             Case "Sql"  
  9.                 DB = New DalUserInfo  
  10.                 'Case "Access"  
  11.                 ' DB = New D_UserInfoAccess  
  12.         End Select  
  13.         Return DB  
  14.     End Function  
  15. End Class  


接口

[vb]  view plain copy print ?
  1. Public Interface IUserInfo  
  2.     Function Check(ByVal IUser As Entity.User) As Entity.User  
  3. End Interface  


DAL层

[vb]  view plain copy print ?
  1. Imports System.Data.SqlClient  
  2. Public Class DalUserInfo : Implements [Interface].IUserInfo  
  3.     Dim ConnStr As String = "Data Source=192.168.24.186;Initial Catalog=Student;User ID=sa;Pwd=123456"  
  4.     Dim conn As SqlConnection = New SqlConnection(ConnStr)  
  5.     Public Function Check(ByVal IUser As Entity.User) As Entity.User Implements [Interface].IUserInfo.Check  
  6.         Dim sql As String = "select * from UserInfo where User_ID='" & IUser.User_Id + "'"  
  7.         Dim cmd As SqlCommand = New SqlCommand(sql, conn)  
  8.         Dim read As SqlDataReader  
  9.         Try  
  10.             conn.Open()  
  11.             read = cmd.ExecuteReader  
  12.             read.Read()  
  13.             IUser.User_Id = read.Item("User_ID")  
  14.             IUser.User_Pwd = read.Item("User_Pwd")  
  15.             Return IUser  
  16.         Catch ex As Exception  
  17.             IUser.User_Pwd = ""  
  18.             Return IUser  
  19.         End Try  
  20.     End Function  
  21. End Class  


三层+抽象工厂

界面层代码不变

Bll层代码不变

接口代码不变

工厂代码

[vb]  view plain copy print ?
  1. Imports [Interface]  
  2. Imports System.Reflection  
  3. Public Class DFactory  
  4.     'Dim DataBase As String = "Access"  
  5.     'Dim DataBase As String = "Sql"  
  6.     Dim strDB As String = System.Configuration.ConfigurationSettings.AppSettings("DBString")  
  7.     Function CreateUserInfo() As IUserInfo  
  8.         Return CType(Assembly.Load("DAL").CreateInstance("DAL.DalUserInfo" & strDB), IUserInfo)  
  9.     End Function  
  10. End Class  


DAL层

[vb]  view plain copy print ?
  1. Imports System.Data.SqlClient  
  2. Public Class DalUserInfoSql : Implements [Interface].IUserInfo  
  3.     'Dim ConnStr As String = "Data Source=192.168.24.186;Initial Catalog=Student;User ID=sa;Pwd=123456"  
  4.     Dim strConnStr As String = System.Configuration.ConfigurationSettings.AppSettings("ConnStr")  
  5.     Dim conn As SqlConnection = New SqlConnection(strConnStr)  
  6.     Public Function Check(ByVal IUser As Entity.User) As Entity.User Implements [Interface].IUserInfo.Check  
  7.         Dim sql As String = "select * from UserInfo where User_ID='" & IUser.User_Id + "'"  
  8.         Dim cmd As SqlCommand = New SqlCommand(sql, conn)  
  9.         Dim read As SqlDataReader  
  10.         Try  
  11.             conn.Open()  
  12.             read = cmd.ExecuteReader  
  13.             read.Read()  
  14.             IUser.User_Id = read.Item("User_ID")  
  15.             IUser.User_Pwd = read.Item("User_Pwd")  
  16.             Return IUser  
  17.         Catch ex As Exception  
  18.             IUser.User_Pwd = ""  
  19.             Return IUser  
  20.         End Try  
  21.     End Function  
  22. End Class  


配置文件

[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <configuration>  
  3.   <startup>  
  4.     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />  
  5.   </startup>  
  6.   <appSettings>  
  7.     <add key="ConnStr" value ="Data Source=192.168.24.186;Initial Catalog=Student;User ID=sa;Pwd=123456"></add>  
  8.     <add key="DBString" value ="Sql"></add>  
  9.   </appSettings>  
  10. </configuration>  

你可能感兴趣的:(抽象工厂,三层)