vb.net版机房收费系统——教你七层架构(三)—外观模式
上次我们看到了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表是否存在该username和password>
'/// </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:<推断username和password是否有误>
'/// </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版机房收费系统——教你七层架构(三)—外观模式的更多相关文章
- vb.net版机房收费——助你学会七层架构(一)
我自己写机房的时候,看非常多高人的博客,各种的借鉴,当初务必的纠结,如今整个机房敲完了,写这篇博客给大家一个总体上的.简单理解的七层,期望大家看完这篇文章之后,不会这个纠结了. 首先大家得看了我的上一 ...
- vb.net版机房收费——助你学会七层架构(二)反射+抽象工厂
上一篇咱们做好了准备工作.数据库设计和Entity层,如今介绍 4.反射+抽象工厂 反射:用来消除Switch和if的,这里我尽量简单地介绍,以便大家理解.反射其有用起来非常easy.你就觉得他就是决 ...
- VB.NET版机房收费系统---导出Excel表格
datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,能够显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件很easy和直观,大多数情 ...
- VB.NET版机房收费系统---异常处理
异常处理,英文名为Exceptional Handling, 那时年少,还记得那年一起学习过的VB6.0的时候,常常使用ONError的错误语句.与传统VB6.0中的OnError语句相比.NET平台 ...
- VB.net版机房收费系统——结账功能实现(调错与优化)
调错部分 上一篇博客<VB.net版机房收费系统--结账功能实现(代码部分>说的是结账功能的实现,亮出了代码.是在为这篇博客做铺垫.尽管结账功能代码是借鉴的巨人的博客.可是自己比着葫芦画瓢 ...
- VB.NET版机房收费系统---七仙女之系统登录
VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...
- VB.NET版机房收费系统---报表
报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据 ...
- VB.NET版机房收费系统---外观层如何写
外观设计模式,<大话设计模式>第103页详细讲解,不记得这块知识的小伙伴可以翻阅翻阅,看过设计模式,敲过书上的例子,只是学习的第一步,接着,如果在我们的项目中灵活应用,把设计模式用出花儿来 ...
- VB.NET版机房收费系统---组合查询
查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有怎样的惊喜等着我? 啊哦,这个信息并不是我想 ...
随机推荐
- 小学生都能学会的python(小数据池)
小学生都能学会的python(小数据池) 1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 ...
- mysql存储小数
线下不知道什么版本的古董了,经本人亲测,varchar类型的数据,可以直接执行mysql的sum函数. ________________________________________________ ...
- FastDFS 实现图片上传_01
一.jar 包 jar包下载:https://pan.baidu.com/s/1nwkAHU5 密码:tlv6 或者 下载工程,安装到 maven 本地仓库 工程下载:https://pan.baid ...
- POJ——T2421 Constructing Roads
http://poj.org/problem?id=2421 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 24132 ...
- leetcode笔记:Find Median from Data Stream
一. 题目描写叙述 Median is the middle value in an ordered integer list. If the size of the list is even, th ...
- HDU 4259
虽然知道是置换,却很久没有思路.忽然想到,由初始状态A经过变换后回到A状态,应该是不停循环可重复的.于是,猜想数字的位置也是重复循环的.拿了个例子验证了一下,某然是这样.例如第二个10,3的例子有1- ...
- GNU Linux中的SO_RCVLOWAT和SO_SNDLOWAT说明
/********************************************************************* * Author : Samson * Date ...
- html5中调用摄像头拍照
方法: getCamera: 获取摄像头管理对象 对象: Camera: 摄像头对象 CameraOption: JSON对象.调用摄像头的參数 PopPosition: JSON对象,弹出拍照或摄像 ...
- cocos2d-x_AnchorPoint锚点
锚点是定位和变换操作的一个重点.锚点我们能够看成用一根图钉将一张纸或者相片钉在墙上的那个点. 节点的位置是由我们设置的position和anchor point一起决定的. 值得一提的是,anchor ...
- MS UI Automation简介
转自:http://blog.csdn.net/ffeiffei/article/details/6637418 MS UI Automation(Microsoft User Interface A ...