天天看點

重做《機房收費系統》——概要設計(BLL、DAL)

基本上界面設計好了, 下一步就要設計BLL層,看這一層是怎樣控制資料的,應該怎樣用控制層進行控制,完成系統呢?

我們首先來分析一下BLL層是怎樣進行控制邏輯的,隻有知道其工作原理了才能較為合理的抽象BLL層的類來。

  我實作了一個三層架構執行個體,從各層中包含的類、各類擁有的方法以及互相調用的順序上讓我從實作的角度重新認識了一下三層架構。

之前我對三層架構的認識隻是停留在理論上,從概念上知道界面層是用來放置窗體類,用來接收使用者給予的消息,并将這些消息傳遞給BLL層進行“處理”。而對于到底如何呼叫,怎樣接收,這些都是問題。通過一個執行個體,我了解到界面層隻需要将一個參數傳給BLL的一個類的方法(告訴BLL層使用者要幹什麼)。

被調用的這個方法是工作實作的主宰,雖然它沒有寫出具體是怎樣實作的。但是它控制了工作實作的步驟。通過它的調用,一步步的完成工作。

這也正展現了控制層的功能,通過對界面傳來的資訊的分析,搞清楚該做什麼工作,定好調用的順序,通過不同的組合來實作不同的功能。

這樣看來,控制層需要結合用例來建立,不同的用例就是不同的功能,不同的功能就需要不同的實作步驟。

有了BLL層程式向使用者展示的東西就非常少了,對程式的安全性是很有好處的。

至于資料處理層就是實際完成工作的地方了,它的工作都是小塊的實際操作,通過控制層的不同調用(組合)就可以實作不同的功能。那我們怎樣才能定下來資料處理層的類呢?

我們對資料的處理大多都是針對資料表的,是以資料處理層的類大多是面向資料庫表的,不同的資料表操作就是與資料表想對應的類的方法。

如有不對資料操作的工作我們可以再控制層直接解決,也可以例外建立一個包來進行處理,也可以将其放在資料處理層中。

不過我還是覺得将将此類操作另外封裝在一個包中。我是這樣考慮的,将這些對資料處理的類進行分類,在今後的維護中可能會展現出一些優勢(隻是猜測)。從仿生學的角度來看,人體就是這樣對資料進行處理的,非條件反射直接在脊髓就處理了(不對資料庫進行操作);條件反射需要到大腦才可以解決(對資料庫進行處理)。可能這樣的比喻不太恰當。

下面我們在對控制層和資料處理層的類進行抽象。

 首先從學生的需求出發: bStuInfo, bStuEnroll, bStuRecharge, bSthCancellation, bStuModinfo, bStuOn, bStuDown, bSI_Enrolli ,bSI_Studenti, bSI_Rechargei, bSI_Onlinei, bSI_Candellationi, bSI_SOSituation, bSI_Balance,

 教師需求:bTA_AddUser, bTA_DelUser, bT_SettleAccounts, bT_ChangePwd, bTI_Tworki , bTI_Rota, bTI_CompelDown,

 會計需求:bA_DaySA, bA_MouthSA, bA_YearSA, bAI_Aworki,

 管理者需求:b_SetRota,b_SetBasalData, bI_Report,

已經将BLL層的類寫好了,接下來就是資料處理層了,我将資料處理層分成了兩個包,一個是“DAL”, 另一個是“operation”。

DAL中的類于資料表是相對應的,共11個:AccountsSAinfo,CandelationInfo,Rota,EnrollInfo,BasalData,OnlineInfo,RechargeInfo,StudentInfo,UserInfo,TeaSAinfo,WorkInfo

而Operation中類包括:OpExpend,OpAccounts

繼續閱讀