您的位置:首页 > 运维架构 > 网站架构

vb.net版机房收费系统——教你七层架构(三)—外观模式

2014-06-25 21:46 447 查看
   上次我们看到了D层是怎样运作的,现在,我简单演示一下我的外观和B层是如何和U层和D层打交道的。

  首先我跟大家说的是我的外观是按照界面功能划分的,粒度有点小,大家在做的时候,记得外观有几个就行了,但是不能没有,U层不能直接调用B层,这样就会增加U层和B层的耦合:

'**************************
'文 件 名:UserInfo_BLL
'命名空间:BLL
'内    容:
'功    能:
'文件关系:
'作    者:邱慕夏
'小    组:邱慕夏
'生成日期:2014-06-07 17:36:40
'版 本 号:V1.0.0.0
'修改日志:
'版权说明:
'***************************
Imports IDAL
Public Class LoginBLL
'/// <summary>
'/// depiction:<查询User表是否存在该用户名和密码>
'/// </summary>
'/// <param name="<参数名称>"><参数说明></param>
'/// <returns>
'///<要返回的是一个实体,entity>
' /// </returns>
Public Function IsExits(ByVal user As Entity.LoginEntity, ByVal worklog As Entity.WorkLogEntity) As Boolean
Dim IUser As IDAL.IUser
Dim factory As New Factory.DataAccess
Dim IWorklog As IDAL.IWorkLog

IUser = factory.CreateUserInfo()
IWorklog = factory.CreateWorkLog()
Dim table As New DataTable
Dim table1 As New DataTable
table = IUser.User_Login(user)
If table.Rows.Count = 0 Then
Return False
Else
Entity.LoginEntity.UserLevel = table.Rows(0)(3)
If IWorklog.SaveWorkLog(worklog) Then
Return True
End If
Return True
End If
End Function

End Class

  B层不但是用来调用D层,而且我们常常会忘记的是:B层是用来做逻辑判断的。

  看看外观层:

 

'**************************
'文 件 名:FLogin
'命名空间:Facade
'内    容:
'功    能:
'文件关系:
'作    者:邱慕夏
'小    组:邱慕夏
'生成日期:2014-06-07 17:41:39
'版 本 号:V1.0.0.0
'修改日志:
'版权说明:
'***************************
Imports BLL
Public Class FA_Login
'/// <summary>
'/// depiction:<判断用户名和密码是否有误>
'/// </summary>
'/// <param name="<参数名称>"><参数说明></param>
'/// <returns>
'///<返回了string类型,可以直接用在msgbox中>
'/// </returns>
Public Function FLogin(ByVal user As Entity.LoginEntity, worklog As Entity.WorkLogEntity) As String
Dim ConfirmUserBll As New BLL.LoginBLL
If ConfirmUserBll.IsExits(user, worklog) = False Then
Return "输入有误"
Else
Return "登陆成功"
End If
End Function
End Class


  其实这里如果不是一个类,而是一个function就更加完美了,这里需要注意的是:外观是这样工作的:



  这个图在设计模式中很不起眼,但是我只记得这个图了。精髓所在。

  U层怎样调用外观呢?

 

'**************************
'文 件 名:FrmLogin
'命名空间:UI
'内    容:
'功    能:
'文件关系:
'作    者:邱慕夏
'小    组:邱慕夏
'生成日期:2014-06-07 16:53:46
'版 本 号:V1.0.0.0
'修改日志:
'版权说明:
'***************************
Public Class FrmLogin

Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Dim login As New Entity.LoginEntity
Dim Flogin As New Facade.FA_Login
Dim strResult As String

login.UserID = txtUserID.Text.Trim()
login.Password = TxtPassword.Text.Trim()
Entity.LoginEntity.UserHead = txtUserID.Text.Trim()

Dim worklog As New Entity.WorkLogEntity
worklog.LoginDateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
worklog.Status = "正在值班"
worklog.UserID = Entity.LoginEntity.UserHead
worklog.Computer = System.Net.Dns.GetHostName().ToString()

strResult = Flogin.FLogin(login, worklog) '插入worklog数据

Select Case strResult
Case "输入有误"
MsgBox("输入有误,请重新输入")
txtUserID.Focus()
Case "登陆成功"
MsgBox("登陆成功")
Entity.WorkLogEntity.Login_DateTime = worklog.LoginDateTime
Me.Hide()
FrmMain.Show()

End Select

End Sub

Private Sub btnQuit_Click(sender As Object, e As EventArgs) Handles btnQuit.Click
Me.Close()
End Sub
End Class

  大家注意调用的时候,好好看看返回值就好了,facade层中返回的是string类型的,那么调用的时候,就这样:

  dim str as string =fa_login(login,worklog)

  这样就行了,U层select case str,就可以判断是否是成功了。

  关于外观层我就不错说了,外观的设计在:

  http://blog.csdn.net/qiumuxia0921/article/details/33738319

  写的很明白,多说无益。

  

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  七层 vb.net