一、概要
這篇部落格,準備用乙個小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 版吧,結果倒好,兩種...