机房收费系统总结之5——抽象工厂+反射+配置文件
起初,机房收费系统用纯三层在做,三层结构已把高内聚,低耦合的思想发挥的淋漓尽致。因为一直听说“抽象工厂”,也开始尝试去应用,经过了一番尝试,也OK了。其中当然会用到反射和配置文件,而接口的引入也是顺理成章的。接口对B层和D层又完成了进一步解耦。
下面就以登录(Login)这个小Demo中的部分功能为例来阐述过程的实现。
前面的一篇博客(机房收费系统总结之3——SqlHelper)介绍过,这里不再赘述。
Imports FacadeImports EntityPublic Class frmLogin Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click Dim strComName As String = System.Net.Dns.GetHostName() '获取计算机名并赋值给变量strComName '给公共变量中的计算机名和用户名赋值 PublicEntity.ComName = strComName PublicEntity.UserName = txtUserName.Text.Trim() '定义一个UserInfoEntity类型的实体类变量,并分别把输入的用户名和密码赋值给变量的UserName属性和Password属性 Dim enUserInfo As New UserInfoEntity With {.UserName = txtUserName.Text.Trim(), .Password = txtPassword.Text.Trim()} '定义一个UserWorkEntity类型的实体类变量,并分别打输入的用户名和所获得的计算机名赋值给变量的UserName属性和ComName属性 Dim enUserWord As New UserWorkEntity With {.UserName = txtUserName.Text.Trim(), .ComName = strComName} '判断是否输入了用户名及密码 If txtUserName.Text.Trim() = "" Then MessageBox.Show("请输入用户名", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Exit Sub ElseIf txtPassword.Text.Trim() = "" Then MessageBox.Show("请输入用密码", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Exit Sub End If Try Dim facadeLogin As LoginFacade = New LoginFacade() '声明LoginFacade类型变量facadeLogin,并实例化 facadeLogin.Login(enUserInfo, enUserWord) '调用Login()方法,完成登录 Me.Hide() '隐藏登录窗体 frmMain.Show() '显示主窗体 Catch ex As Exception '捕获异常并显示 MsgBox(ex.Message, CType(vbOKOnly + MsgBoxStyle.Information, MsgBoxStyle), "提示") End Try End SubEnd Class