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


简单三层

界面层

  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层

  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层

  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  


实体层

  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层

  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  


工厂

  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  


接口

  1. Public Interface IUserInfo  
  2.     Function Check(ByVal IUser As Entity.User) As Entity.User  
  3. End Interface  


DAL层

  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层代码不变

接口代码不变

工厂代码

  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层

  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>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值