VB.NET版机房收费系统---外观层如何写

VB.NET版机房收费系统---外观层如何写,第1张

概述       外观设计模式,《大话设计模式》第103页详细讲解,不记得这块知识的小伙伴可以翻阅翻阅,看过设计模式,敲过书上的例子,只是学习的第一步,接着,如果在我们的项目中灵活应用,把设计模式用出花儿来,才是王道,有人总说,纸上得来终觉浅,绝知此事要躬行,可是真到了躬行的时候,总是行不通,语言倒不过来,设计模式是C#语言的,机房收费是VB.NET版本的,书上的模式和机房联系不起来,不知道怎么应用, 外观设计模式,《大话设计模式》第103页详细讲解,不记得这块知识的小伙伴可以翻阅翻阅,看过设计模式,敲过书上的例子,只是学习的第一步,接着,如果在我们的项目中灵活应用,把设计模式用出花儿来,才是王道,有人总说,纸上得来终觉浅,绝知此事要躬行,可是真到了躬行的时候,总是行不通,语言倒不过来,设计模式是C#语言的,机房收费是VB.NET版本的,书上的模式和机房联系不起来,不知道怎么应用,没办法,憋呗,看博客,问人,上网查资料,就这样,憋出一个外观,虽不太完美,但却异常宝贵,因为那是我纠结好长时间从尘埃里开出的花,就外观模式的应用在这里小小的总结一下。
就机房收费系统中的一个注册功能来说,着手之前,我们需要做以下思考工作:
a、从学生表里查询,是否存在该学号;
b、从卡表里查询,是否存在该卡号;
c、在学生表里插入一条记录;
d、在卡表里插入一条记录;
e、在充值表里插入一条记录;
在外观层我的代码如下:(该博文,重点阐述外观层的写法,其她层再此不再赘述)
<span >'**********************************************'文 件 名: RegisterFacade'命名空间: Facade'内    容: 从卡表和学生表里面查询是否存在该卡号和学号,存在,给出提示,不存在,注册成功之后,一次向卡表,学生表和充值表中写入相关信息'功    能: 注册'文件关系:'作    者:丁国华'小    组:宝贝计划'生成日期: 2014/7/17 15:06:56'版本号:V2.0'修改日志:'版权说明:'**********************************************Public Class RegisterFacade    '/// <summary>    '/// depiction:<从学生表里面查询是否存在该学号>    '/// </summary>    '/// <param name="<enStudent>"><学生实体></param>    '/// <returns>    '///<返回一个学生实体的集合>    '/// </returns>    Public Function queryStudentNo(ByVal studentNo As String) As List(Of Entity.StudentEntity)        Dim studentBLL As New BLL.T_StudentBLL        Dim myList As List(Of Entity.StudentEntity)        myList = studentBLL.queryStudentNo(studentNo)        If myList.Count > 0 Then            Throw New Exception("该学号已经存在")        Else            Return myList        End If    End Function    '/// <summary>    '/// depiction:<从卡表里面查询是否存在该卡号>    '/// </summary>    '/// <param name="<enCard>"><卡实体></param>    '/// <returns>    '///<返回一个卡实体的集合>    '/// </returns>    Public Function queryCardNo(ByVal cardNo As String) As List(Of Entity.CardEntity)        Dim cardBLL As New BLL.T_CardBLL        Dim myList As List(Of Entity.CardEntity)        myList = cardBLL.queryCardNo(CardNo)        If myList.Count > 0 Then            Throw New Exception("该卡号已经存在")        Else            Return myList        End If    End Function    '/// <summary>    '/// depiction:<插入一条学生信息>    '/// </summary>    '/// <param name="<enStudent>"><学生实体></param>    '/// <returns>    '///<返回布尔值>    '/// </returns>    Public Function InsertStudent(ByVal enStudent As Entity.StudentEntity) As Boolean        Dim StudentBLL As New BLL.T_StudentBLL        Dim flag As Boolean        flag = StudentBLL.InsertStudent(enStudent)        Return flag    End Function    '/// <summary>    '/// depiction:<插入一条卡信息>    '/// </summary>    '/// <param name="<enCard>"><卡实体></param>    '/// <returns>    '///<返回布尔值>    '/// </returns>    Public Function InsertCard(ByVal enCard As Entity.CardEntity) As Boolean        Dim CardBLL As New BLL.T_CardBLL        Dim flag As Boolean        flag = CardBLL.InsertCard(enCard)        Return flag    End Function       '/// <summary>    '/// depiction:<插入一条充值信息>    '/// </summary>    '/// <param name="<enRecharge>"><充值实体></param>    '/// <returns>    '///<返回布尔值>    '/// </returns>    Public Function InsertRecharge(ByVal enRecharge As Entity.RechargeEntity) As Boolean        Dim RechargeBLL As New BLL.T_RechargeBLL        Dim Flag As Boolean        Flag = RechargeBLL.InsertRecharge(enRecharge)        Return Flag    End FunctionEnd Class</span>
接着,我们再来看下一个充值的功能,着手之前,我们需要做一下思考工作:
a、从卡表里面查询,是否存在该卡号;
b、在充值表里面插入一条充值记录;
c、更新卡表中的余额

和上述的注册功能相比较,两个功能都需要从卡表里面查询和向充值表里面插入一条记录。所以充值这个功能,她的接口层(IDAL),D层(DAL),Factory-工厂层,BLL-业务逻辑层,她的代码写法和上述的注册功能的写法都是一样的,我们就不需要在写一次,直接调用就可以了,但是外观层要怎么写呢,写着写着就写不下去了,按着以前的写法,只需要在外观层写一个更新卡表中余额的方法就行了,从卡表中查询和在充值表中插入一条充值记录,只需要调用注册的外观就可以了,可是,这样写的话,U层就调用了两个外观层,那还是外观层么?显然不是,看人程杰老师的大话设计模式中,外观的写法是把小的方法汇总成一个总的方法,写在一个大的方法里面,那充值的外观到底如何写呢?如下:

<span >'**********************************************'文 件 名: RechargeFacade'命名空间: Facade'内    容:'功    能:'文件关系:'作    者:丁国华'小    组:宝贝计划'生成日期: 2014/7/18 22:18:04'版本号:V2.0'修改日志:'版权说明:'**********************************************Public Class RechargeFacade    '/// <summary>    '/// depiction:<查询卡号>    '/// </summary>    '/// <param name="<enCard>"><卡号></param>    '/// <returns>    '///<返回集合>    '/// </returns>    Public Function queryCard(ByVal cardNo As String) As List(Of Entity.CardEntity)        Dim cardbll As New BLL.T_CardBLL        Dim myList As List(Of Entity.CardEntity)        myList = cardbll.queryCardNo(cardNo)        If myList.Count = 0 Then            Throw New Exception("该卡号不存在")        Else            Return myList        End If    End Function    '/// <summary>    '/// depiction:<需要向卡表中插入一条记录,更新卡表中的余额,我们把这两个写成一个方法,因为都需要返回一个布尔值>    '/// </summary>    '/// <param name="<enCard>"><卡号></param>    '/// <returns>    '///<返回集合>    '/// </returns>    Public Function Recharge(ByVal enCard As Entity.CardEntity,ByVal enRecharge As Entity.RechargeEntity) As Boolean        Dim CardBLL As New BLL.T_CardBLL        Dim RechargeBLL As New BLL.T_RechargeBLL        Dim Flag(2) As Boolean        Flag(0) = RechargeBLL.InsertRecharge(enRecharge)        Flag(1) = CardBLL.UpdateCard(enCard)        If Flag(0) And Flag(1) Then            Return Flag(0)        Else            Return False        End If    End FunctionEnd Class</span>
小伙伴肯定有疑问,上面注册的外观层不是仍然有两个方法?简单,解释一下,因为,查询卡号的时候,我们需要返回一个卡表的实体,然后从里面找到以前的余额,然后还要加上充值的金额,形成一个新的余额,更新的时候才能有一个卡表实体,下面recharge的那个方我们的返回值boolean,true为充值成功,一个方法不可能有两个返回值,所以写成两个方法,总的来说就是具体外观层有几个方法,是由返回值定的。第二遍机房收费系统,未完,待续...... 总结

以上是内存溢出为你收集整理的VB.NET版机房收费系统---外观层如何写全部内容,希望文章能够帮你解决VB.NET版机房收费系统---外观层如何写所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1272948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存