客房收费系统改造(三)—厂+反射+DAL

时间:2022-09-23 15:04:10

前一段时间有一个简单的三登录功能实现窗口,心灵修养一点点,但很快就被泼了一盆冷水。房费是不可能做到在短短三年,假设你使用三个,这倒房费三个功能必须使用函数来实现。了七层的研究。

经过一个星期的看博客。总结,调代码,最终实现了窗口登录,信息录入。和简单充值查询功能。

  说说自己这次七层之旅的总结吧。

  1.毋庸置疑。研究一个窗口功能,我首先推断的是须要用到数据库中的哪些表(这是属于我自己的编程习惯,不适用所有),然后再实体层中将表中的字段表示出来,有多少个表就有多少实体类,实体类仅仅会多于表的数量!一个表映射出一个实体类,表中的字段就是实体类的属性!

这里附带上自己代码中的一部分吧。

Public Class LoginModel
Private _userID As String
Private _level As String
Private _password As String
Private _userName As String
Private _computer As String Public Shared UserHead As String ' 设置全局变量
Public Shared UserLevel As String Public Property UserID() As String
Get
Return _userID
End Get
Set(value As String)
_userID = value
End Set
End Property
Public Property PassWord() As String
Get
Return _password
End Get
Set(value As String)
_password = value
End Set
End Property
Public Property level() As String
Get
Return _level
End Get
Set(value As String)
_level = value
End Set
End Property
Public Property UserName() As String
Get
Return _userName
End Get
Set(value As String)
_userName = value
End Set
End Property
Public Property Computer() As String
Get
Return _computer
End Get
Set(value As String)
_computer = value
End Set
End Property
End Class

2.接下俩进行的是关于工厂+反射+接口+DAL的介绍了

  这个过程中涉及的东西比較多。我先概括的说说自己这部分用到了什么知识吧!

(1) 用反射+抽象工厂的数据訪问程序

開始以为是新知识,可是大家能够看看咱们《设计模式》,抽象工厂一章中说到反射利用字符串来实例化对象,而变量时能够更换的!

大家记住一段简单的代码吧:

Assmbly.load("程序集名称").CreadteInstance("命名空间.类名称")我把这段话理解为制造接口的过程。

关于这部分内容会有专门的博客写到!

在敲工厂时会常常出现这种错误:

客房收费系统改造(三)—厂+反射+DAL

出现了这个错误,查了查博客,以下我仅仅说出自己的方法,将DAL中生成输出路径。改为UI的生成输出路径就可以,关于这个错误。有好多具体的博客介绍。

我就不多说了。

(2)接下来我就開始理解关于工厂,接口和DAL之间的关系了。。工厂反射。就是防止更换数据库,接着工厂事实上就是生产接口,将DAL中的类生成接口,然后在DAL中调用接口,来实现接口。

关于DAL中对数据库的增删改查都是反复的,这里我们抽象出一个类Sqlhelper。我们学的是面向对象,就是学会使用面向对象的思想,关于Sqlhelper博客请看我的这篇博客《机房收费重构(四)-SqlHelper》

Sqlhelper类我写在了DAL的以下,而后面的代码就会变得简单起来。就是声明。实例化,返回值的应用了。

附上小部分代码:

<strong><span style="font-size:18px;">    Public Function RechargeQuery(cardno As Model.RechargeModel) As Model.RechargeModel Implements IDAL.IRecharge.RechargeQuery
Dim sqlparams As SqlParameter() = {New SqlParameter("@CardNo", cardno.StuInfoQuery)}
Dim strText As String = "select * from T_StuInfo where CardNo =@CardNo"
Dim helper As New SqlHelper
Dim cmdtype As CommandType = New CommandType()
cmdtype = CommandType.Text
Dim table As DataTable
Dim Ucardno As New Model.RechargeModel
table = helper.ExecuteQuery(strText, cmdtype, sqlparams)
If table.Rows.Count <> 0 Then
Ucardno.StuInfoQuery = table.Rows(0).Item("CardNo")
End If
Return Ucardno
End Function</span></strong>

事实上在这一部分还会有关于存储过程的介绍。可是介于篇幅的影响就不向大家介绍了。

 本文纯属个人理解,如果误解。每个人都被邀请拍砖!

  接下来,我会向你介绍BLL和理解层的外观