日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java三层架构项目事例_三层架构实例

發(fā)布時(shí)間:2023/12/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java三层架构项目事例_三层架构实例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、概要

在我的上一篇博客中,我們談了談分層,到底為什么分層(http://blog.csdn.net/shan9liang/article/details/6836300)

這篇博客,準(zhǔn)備用一個(gè)小Demo來介紹應(yīng)該實(shí)現(xiàn)三層架構(gòu)。三層架構(gòu)只是分層的一種經(jīng)典形式,到底分幾層,要依具體情況而定,考慮到系統(tǒng)的復(fù)雜程度,和后期的可維護(hù)性,完全可以分四層,五層,甚至六層,七層。

三層架構(gòu)(3-tierapplication),通常意義上的三層架構(gòu)就是將整個(gè)業(yè)務(wù)應(yīng)用劃分為:表現(xiàn)層(UI)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問層(DAL)。區(qū)分層次的目的即為了“高內(nèi)聚,低耦合”的思想(《百度百科》)

二、DEMO

1、實(shí)現(xiàn)語言:VB.NET

2、需求:《學(xué)校機(jī)房收費(fèi)系統(tǒng)》中的一個(gè)功能:操作員為學(xué)生注冊(cè)機(jī)房上機(jī)卡。

3、用例圖:

4、三層架構(gòu)下的包圖:

注:Entity中放的都是實(shí)體類,即由數(shù)據(jù)庫中的表抽象出來的類。實(shí)體類主要作為數(shù)據(jù)的載體,在各個(gè)層之間被傳遞。

我們現(xiàn)在要做的就是對(duì)用例圖中所示的這個(gè)功能進(jìn)行抽象,即分別在UI,BLL,DAL三層抽象類。

數(shù)據(jù)訪問層DAL:數(shù)據(jù)庫中的一張表對(duì)應(yīng)DAL層的一個(gè)類,所以這里要有一個(gè)dal_DealStudentInfo類,它必然有一個(gè)方法AddRecord,用于向數(shù)據(jù)庫中添加數(shù)據(jù)。這個(gè)方法的參數(shù)便是studentInfo這張表映射出的一個(gè)實(shí)體類的一個(gè)實(shí)例,方法中包含了一些SQL語句。IsExist是驗(yàn)證數(shù)據(jù)有效性,這里主要是檢驗(yàn)用戶是否已經(jīng)存在。圖示:

關(guān)鍵代碼如下:

Public Class dal_DealStudentInfo

Public Function AddRecord(ByVal RecInfo As Student) As Boolean

'……

'連接數(shù)據(jù)庫

'……

'……

Try

'SQL語句向數(shù)據(jù)庫中寫入數(shù)據(jù)

'……

Return True

Catch

Return False

Finally

'關(guān)閉數(shù)據(jù)庫

End Try

End Function

Public Function IsExist() As Boolean

'查詢數(shù)據(jù)庫,如果存在該卡,則返回True,不存在則返回false

If '存在

Return True

Else

Return False

End If

End Function

End Class

業(yè)務(wù)邏輯層BLL:這里會(huì)有一個(gè)類bll_ControlStudent與DAL層中的dal_DealStudentInfo類對(duì)應(yīng),調(diào)用dal_DealStudentInfo的AddRecord方法,這個(gè)方法傳遞的參數(shù)就是UI層傳遞過來的studentInfo實(shí)體類的一個(gè)實(shí)例。如果需要驗(yàn)證輸入合法性,也放在bll_ControlStudent中,并與dal_DealStudentInfo中的方法相對(duì)應(yīng),可以單獨(dú)用一個(gè)方法,也可以集成到AddStudent中,我這里因?yàn)橹皇沁M(jìn)行了簡單的判斷,就把它放到了AddStudent。

圖示:

關(guān)鍵代碼如下:

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 "注冊(cè)成功"

Else

Return "注冊(cè)失敗"

End If

Else

Return "該卡已經(jīng)存在,請(qǐng)重新輸入卡號(hào)"

End If

End Function

End Class

表現(xiàn)層UI:這里肯定有一個(gè)窗體類frmRegister。上面有一些控件,這里我簡要畫了一個(gè)界面:

在按鈕確定的事件下,我們需要實(shí)例化studentInfo這張表映射出的一個(gè)實(shí)體類,把這個(gè)對(duì)象作為一個(gè)參數(shù),傳遞給BLL層中的類bll_ControlStudent。

關(guān)鍵代碼:

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、總體的關(guān)系類圖:

五、總結(jié)

本文主要通過一個(gè)小demo簡要實(shí)現(xiàn)了三層架構(gòu),我們看到三層架構(gòu)的主要特點(diǎn):UI調(diào)用BLL中類的方法,即UI知道BLL的方法,但不知道方法實(shí)現(xiàn)的細(xì)節(jié),而BLL層并不知道UI的存在.同樣BLL層調(diào)用DAL,而DAL也不知道BLL的存在。三者中任何一者發(fā)生變化都不會(huì)影響其他倆者的正常工作,只對(duì)變化者進(jìn)行重新調(diào)整即可。三層把Entity實(shí)體類的實(shí)例作為參數(shù)來傳遞.

總之,表示層只提供軟件系統(tǒng)與用戶交互的接口;業(yè)務(wù)邏輯層是界面層和數(shù)據(jù)訪問層之間的橋梁,負(fù)責(zé)數(shù)據(jù)處理和傳遞;數(shù)據(jù)訪問層只負(fù)責(zé)數(shù)據(jù)的存取工作。

總結(jié)

以上是生活随笔為你收集整理的java三层架构项目事例_三层架构实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。