三層架構執行個體

來源:互聯網
上載者:User

一、概要
在我的上一篇部落格中,我們談了談分層,到底為什麼分層(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 FunctionEnd 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 FunctionEnd 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 SubEnd Class

4、總體的關係類圖:


五、總結
本文主要通過一個小demo簡要實現了三層架構,我們看到三層架構的主要特點:UI調用BLL中類的方法,即UI知道BLL的方法,但不知道方法實現的細節,而BLL層並不知道UI的存在.同樣BLL層調用DAL,而DAL也不知道BLL的存在。三者中任何一者發生變化都不會影響其他倆者的正常工作,只對變化者進行重新調整即可。三層把Entity實體類的執行個體作為參數來傳遞.
總之,展示層只提供軟體系統與使用者互動的介面;商務邏輯層是介面層和資料訪問層之間的橋樑,負責資料處理和傳遞;資料訪問層只負責資料的存取工作。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.