java三层架构项目事例_三层架构实例
一、概要
在我的上一篇博客中,我們談了談分層,到底為什么分層(http://blog.csdn.net/shan9liang/article/details/6836300)
這篇博客,準備用一個小Demo來介紹應該實現三層架構。三層架構只是分層的一種經典形式,到底分幾層,要依具體情況而定,考慮到系統的復雜程度,和后期的可維護性,完全可以分四層,五層,甚至六層,七層。
三層架構(3-tierapplication),通常意義上的三層架構就是將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。區分層次的目的即為了“高內聚,低耦合”的思想(《百度百科》)
二、DEMO
1、實現語言:VB.NET
2、需求:《學校機房收費系統》中的一個功能:操作員為學生注冊機房上機卡。
3、用例圖:
4、三層架構下的包圖:
注:Entity中放的都是實體類,即由數據庫中的表抽象出來的類。實體類主要作為數據的載體,在各個層之間被傳遞。
我們現在要做的就是對用例圖中所示的這個功能進行抽象,即分別在UI,BLL,DAL三層抽象類。
數據訪問層DAL:數據庫中的一張表對應DAL層的一個類,所以這里要有一個dal_DealStudentInfo類,它必然有一個方法AddRecord,用于向數據庫中添加數據。這個方法的參數便是studentInfo這張表映射出的一個實體類的一個實例,方法中包含了一些SQL語句。IsExist是驗證數據有效性,這里主要是檢驗用戶是否已經存在。圖示:
關鍵代碼如下:
Public Class dal_DealStudentInfo
Public Function AddRecord(ByVal RecInfo As Student) As Boolean
'……
'連接數據庫
'……
'……
Try
'SQL語句向數據庫中寫入數據
'……
Return True
Catch
Return False
Finally
'關閉數據庫
End Try
End Function
Public Function IsExist() As Boolean
'查詢數據庫,如果存在該卡,則返回True,不存在則返回false
If '存在
Return True
Else
Return False
End If
End Function
End Class
業務邏輯層BLL:這里會有一個類bll_ControlStudent與DAL層中的dal_DealStudentInfo類對應,調用dal_DealStudentInfo的AddRecord方法,這個方法傳遞的參數就是UI層傳遞過來的studentInfo實體類的一個實例。如果需要驗證輸入合法性,也放在bll_ControlStudent中,并與dal_DealStudentInfo中的方法相對應,可以單獨用一個方法,也可以集成到AddStudent中,我這里因為只是進行了簡單的判斷,就把它放到了AddStudent。
圖示:
關鍵代碼如下:
Public Class bll_ControlStudent
Public Function AddStudent(ByVal student As Student) As String
Dim DealStudent As New dal_DealStudentInfo
If Not (DealStudent.IsExist) Then
If DealStudent.AddRecord(student) Then
Return "注冊成功"
Else
Return "注冊失敗"
End If
Else
Return "該卡已經存在,請重新輸入卡號"
End If
End Function
End Class
表現層UI:這里肯定有一個窗體類frmRegister。上面有一些控件,這里我簡要畫了一個界面:
在按鈕確定的事件下,我們需要實例化studentInfo這張表映射出的一個實體類,把這個對象作為一個參數,傳遞給BLL層中的類bll_ControlStudent。
關鍵代碼:
Public Class frmRegister
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
Dim strMsg As String
Dim student As New Student(Trim(txtCardNo.Text), Trim(txtStuName.Text), Trim(txtStuNo.Text), Trim(txtDepartment.Text), Val(txtMoney.Text))
Dim ControlStudent As New bll_ControlStudent
strMsg = ControlStudent.AddStudent(student)
MessageBox.Show(strMsg)
End Sub
Private Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.Click
Me.Close()
End Sub
End Class
4、總體的關系類圖:
五、總結
本文主要通過一個小demo簡要實現了三層架構,我們看到三層架構的主要特點:UI調用BLL中類的方法,即UI知道BLL的方法,但不知道方法實現的細節,而BLL層并不知道UI的存在.同樣BLL層調用DAL,而DAL也不知道BLL的存在。三者中任何一者發生變化都不會影響其他倆者的正常工作,只對變化者進行重新調整即可。三層把Entity實體類的實例作為參數來傳遞.
總之,表示層只提供軟件系統與用戶交互的接口;業務邏輯層是界面層和數據訪問層之間的橋梁,負責數據處理和傳遞;數據訪問層只負責數據的存取工作。
總結
以上是生活随笔為你收集整理的java三层架构项目事例_三层架构实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特斯拉为北美 Model S / X 准
- 下一篇: 微乐分可以协商还款吗 微乐分还款可以协商