机房收费系统重构(三)—工厂+反射+DAL
? 前段時間用簡單的三層實現了窗體登錄功能,心中有點小小的成就感,但是很快就被潑了涼水,機房收費不可能只用三層實現,如果你用三層,也就是說后面機房收費所有的功能都必須使用三層來實現功能。所以一周前始了七層的研究。經過一個星期的看博客,總結,調代碼,終于實現了窗體登錄,信息錄入,和簡單充值查詢功能。
? 說說自己這次七層之旅的總結吧。
? 1.毋庸置疑,研究一個窗體功能,我首先判斷的是需要用到數據庫中的哪些表(這是屬于我自己的編程習慣,不適用全部),然后再實體層中將表中的字段表示出來,有多少個表就有多少實體類,實體類只會多于表的數量!一個表映射出一個實體類,表中的字段就是實體類的屬性!這里附帶上自己代碼中的一部分吧!
Public Class LoginModelPrivate _userID As StringPrivate _level As StringPrivate _password As StringPrivate _userName As StringPrivate _computer As StringPublic Shared UserHead As String ' 設置全局變量Public Shared UserLevel As StringPublic Property UserID() As StringGetReturn _userIDEnd GetSet(value As String)_userID = valueEnd SetEnd PropertyPublic Property PassWord() As StringGetReturn _passwordEnd GetSet(value As String)_password = valueEnd SetEnd PropertyPublic Property level() As StringGetReturn _levelEnd GetSet(value As String)_level = valueEnd SetEnd PropertyPublic Property UserName() As StringGetReturn _userNameEnd GetSet(value As String)_userName = valueEnd SetEnd PropertyPublic Property Computer() As StringGetReturn _computerEnd GetSet(value As String)_computer = valueEnd SetEnd Property End Class? 2.接下倆進行的是關于工廠+反射+接口+DAL的介紹了
? 這個過程中涉及的東西比較多。我先概括的說說自己這部分用到了什么知識吧!
(1) 用反射+抽象工廠的數據訪問程序
開始以為是新知識,但是大家可以看看咱們《設計模式》,抽象工廠一章中說到反射利用字符串來實例化對象,而變量時可以更換的!
大家記住一段簡單的代碼吧:
Assmbly.load("程序集名稱").CreadteInstance("命名空間.類名稱")我把這段話理解為制造接口的過程。
關于這部分內容會有專門的博客寫到!
在敲工廠時會經常出現這樣的錯誤:
出現了這個錯誤,查了查博客,下面我只說出自己的方法,將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.RechargeQueryDim sqlparams As SqlParameter() = {New SqlParameter("@CardNo", cardno.StuInfoQuery)}Dim strText As String = "select * from T_StuInfo where CardNo =@CardNo"Dim helper As New SqlHelperDim cmdtype As CommandType = New CommandType()cmdtype = CommandType.TextDim table As DataTableDim Ucardno As New Model.RechargeModeltable = helper.ExecuteQuery(strText, cmdtype, sqlparams)If table.Rows.Count <> 0 ThenUcardno.StuInfoQuery = table.Rows(0).Item("CardNo")End IfReturn UcardnoEnd Function</span></strong>其實在這一部分還會有關于存儲過程的介紹,但是介于篇幅的影響就不向大家介紹了。?這篇文章純屬個人理解,如有錯誤理解,歡迎大家踴躍拍磚!
? 接下來我會向大家介紹BLL和外觀層的理解
轉載于:https://www.cnblogs.com/xzpblog/p/5117983.html
總結
以上是生活随笔為你收集整理的机房收费系统重构(三)—工厂+反射+DAL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vim 配置svn
- 下一篇: Linux系统下的数据镜像备份工具——R