c mysql三層架構例項 三層架構例項

2021-10-17 20:44:25 字數 2786 閱讀 5408

一、概要

這篇部落格,準備用乙個小demo來介紹應該實現三層架構。三層架構只是分層的一種經典形式,到底分幾層,要依具體情況而定,考慮到系統的複雜程度,和後期的可維護性,完全可以分四層,五層,甚至六層,七層。

二、demo

1、實現語言:vb.net

2、需求:《學校機房收費系統》中的乙個功能:操作員為學生註冊機房上機卡。

3、用例圖:

4、三層架構下的包圖:

注:entity中放的都是實體類,即由資料庫中的表抽象出來的類。實體類主要作為資料的載體,在各個層之間被傳遞。

我們現在要做的就是對用例圖中所示的這個功能進行抽象,即分別在ui,bll,dal三層抽象類。

資料訪問層dal:資料庫中的一張表對應dal層的乙個類,所以這裡要有乙個dal_dealstudentinfo類,它必然有乙個方法addrecord,用於向資料庫中新增資料。這個方法的引數便是studentinfo這張表對映出的乙個實體類的乙個例項,方法中包含了一些sql語句。i***ist是驗證資料有效性,這裡主要是檢驗使用者是否已經存在。圖示:

關鍵**如下:

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 i***ist() 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.i***ist) 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實體類的例項作為引數來傳遞.

總之,表示層只提供軟體系統與使用者互動的介面;業務邏輯層是介面層和資料訪問層之間的橋梁,負責資料處理和傳遞;資料訪問層只負責資料的訪問工作。

三層架構例項

4 三層架構下的包圖 注 entity中放的都是實體類,即由資料庫中的表抽象出來的類。實體類主要作為資料的載體,在各個層之間被傳遞。我們現在要做的就是對用例圖中所示的這個功能進行抽象,即分別在ui,bll,dal三層抽象類。資料訪問層dal 資料庫中的一張表對應dal層的乙個類,所以這裡要有乙個da...

C 三層架構例項

對於三層的概念查也查了,看也看了,下面是我找的乙個關於三層的簡單例項,真正看一下它是如何具體實現的.我們先來一起看看 實體類 model 實質 實體類就是在完成資料庫與實體類對應的功能,乙個類是一張表,乙個屬性是乙個字段!using system using system.collections.g...

三層架構 之三層擴充套件七層

哎,真心不想在這裡寫這篇部落格,本來三層到七層頂多了也就用兩天時間去分析,結果我用了將近四天,最後我都快崩潰了,還有好多問題都是同學幫我找出來的,真是很是汗顏吶!下面是我三層架構擴充套件成七層架構的uml包圖 之前看別人都是用的vb.net版,我就覺得剛學習了c 語言,就先用c 版吧,結果倒好,兩種...