標籤:
一:業務層架構模式概述
在三層架構中,業務層負責所有業務相關的工作,包括根據輸入資料或已有資料進行計算,對從展示層輸入的資料進行驗證,以及根據從展示層接收的命令來確定應該調用哪些資料訪問邏輯。對於應用系統來說,業務層主要維護商務邏輯,是系統的核心部分。因此,在應用系統開發時,業務層的開發是最為關鍵的。
業務層的架構模式有多種,最著名的就是以下兩種 :事務指令碼模型(面向過程的設計)領域模型(物件導向的設計) 二:事務指令碼模型事務指令碼(Transaction Script)架構模型是按照傳統的過程化方式組織商務邏輯,它將業務層的商務邏輯組織為一系列的事務指令碼,每個事務指令碼是一個訪問資料庫並執行計算的方法,每個事務指令碼處理來自於展示層的單個請求。事務指令碼通常被分組在一起,形成一個事務指令碼類,以實現一到多個用例的商務邏輯。 在使用事務指令碼模式組織商務邏輯時,業務層結構由如下三個部分組成: 事務指令碼:事務指令碼類由一些方法組成,一個方法對應一個事務指令碼,也就是對應一個使用者請求。 DTO:事務指令碼類操作DTO(Data Transfer Object,資料轉送對象)。DTO只有成員變數,沒有方法。它包含來自資料庫的資料,並由事務指令碼返回給展示層。//實體類 DAO:事務指令碼使用DAO訪問資料庫 為了更清晰地理解事務指令碼架構模式,我們以開發一個簡單的員工管理系統為樣本,今天的作業就是這個了!再增加一個根據條件查詢資訊的開發基於事務指令碼模式的商務邏輯的過程由四個步驟組成: 1)識別事務指令碼; 識別事務指令碼可以通過分析用例或者分析使用者介面原型,其中分析使用者介面原型最為直接簡單。
2)實現事務指令碼; 現在我們已經識別了事務指令碼,並確定了它們的參數和傳回值類型。那麼,整個過程的下一步就是實現事務指令碼介面。
3)實現DTO; DTO在事務指令碼和DAO之間,以及事務指令碼和展示層之間傳遞。DAO使用DTO來返回需要從資料庫擷取的資料給事務指令碼,事務指令碼使用DTO傳遞資料到DAO,以更新資料庫。事務指令碼也會將DTO返回給展示層。
DTO只儲存資料,只有成員變數和setter/getter方法。DTO及其成員變數可以組合如下三種識別技術來判斷:
為每個資料庫實體表定義一個DTO,DTO的成員變數與表的列對應。
為每個使用者介面定義個DTO,DTO的成員變數包含顯示在螢幕上的資料。運用簡單的OO分析和設計技術,識別類及其成員變數。
4)實現DAO。 每個DAO由一個介面和一個實作類別組成。在上章我們已經學習過DAO的實現方法。這裡不在詳細講述,只列出簡單員工管理系統的DAO介面及實作類別代碼
事務指令碼最大的優勢在於使用簡單。因為採用過程化設計,一個使用者請求對應一個事務指令碼,使用者無須擁有OO設計技能,不用識別類以及為類分配職責,任何初學者都可以很快掌握事務指令碼模式來組織商務邏輯的方法。 缺點:因為事務指令碼採用的是過程化設計的方法,所有商務邏輯都集中在事務指令碼裡面。很顯然,將商務邏輯都集中在事務指令碼裡,違反了物件導向設計中單一職責等設計原則。這使得代碼難以維護和理解,尤其是商務邏輯複雜的時候。 事務指令碼模式雖然有缺點,但是至今仍然有很多Team Dev採用該模式來組織業務層的商務邏輯。當商務邏輯相對比較簡單時,採用事務指令碼模式可以大大加快開發進度。同時,如果Team Dev缺乏物件導向設計技能,採用事務指令碼模式也是理智的選擇。
業務層架構模式