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版机房收费系统---组合查询
查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有怎样的惊喜等着我? 啊哦,这个信息并不是我想 ...
随机推荐
- ZJOI—— 密码机(2003)
ZJOI2003密码机,没找到可以测试的网站,就只过了样例~~ 题目描述 一台密码机按照以下的方式产生密码:首先往机器中输入一系列数,然后取出其中一部分数,将它们异或以后得到一个新数作为密码.现在请你 ...
- 今天开始看看brpc-baidurpc
链接如下: Link 大概看了一下.没有很明显的感觉.还是喜欢机器学习相关的内容.
- Ruby print
Ruby print
- 算法 - 求一个数组的最长递减子序列(C++)
//************************************************************************************************** ...
- nyoj--236--心急的C小加(动态规划&&LIS)
心急的C小加 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间 ...
- javascript系列-class8.BOM
1.浏览器对象模型( browser object model ) 什么是BOM? 提起BOM就不得不提起JavaScript的构成.ECMAScript为JavaScript的核心,但是要 ...
- 22.boost图模板
//#pragma warning(disable : 4819) #include <boost/config.hpp> #include <iostream> // for ...
- JavaScript学习记录一
title: JavaScript学习记录一 toc: true date: 2018-09-11 18:26:52 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- POJ 1990 线段树
题意: 思路: 线段树 (一棵就够啦 不像树状数组,还得用两棵) 先对v从小到大排序.每回插入的时候当前的v是最大的,只需要统计它到各个坐标的距离就好了. 里面存两个东西: 这个坐标左边的坐标个数和这 ...
- Kali linux 2016.2(Rolling)中的Exploits模块详解
简单来将,这个Exploits模块,就是针对不同的已知漏洞的利用程序. root@kali:~# msfconsole Unable to handle kernel NULL pointer der ...