一:業務層架構模式概述數據庫
在三層架構中,業務層負責全部業務相關的工做,包括根據輸入數據或已有數據進行計算,對從表示層輸入的數據進行驗證,以及根據從表示層接收的命令來肯定應該調用哪些數據訪問邏輯。對於應用系統來講,業務層主要維護業務邏輯,是系統的核心部分。所以,在應用系統開發時,業務層的開發是最爲關鍵的。架構
業務層的架構模式有多種,最著名的就是如下兩種 :
事務腳本模型(面向過程的設計)
領域模型(面向對象的設計)
二:事務腳本模型
事務腳本(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的成員變量與表的列對應。blog
爲每一個用戶界面定義個DTO,DTO的成員變量包含顯示在屏幕上的數據。
運用簡單的OO分析和設計技術,識別類及其成員變量。
4)實現DAO。 每一個DAO由一個接口和一個實現類組成。在上章咱們已經學習過DAO的實現方法。這裏不在詳細講述,只列出簡單員工管理系統的DAO接口及實現類代碼 接口
事務腳本最大的優點在於使用簡單。由於採用過程化設計,一個用戶請求對應一個事務腳本,使用者無須擁有OO設計技能,不用識別類以及爲類分配職責,任何初學者均可以很快掌握事務腳本模式來組織業務邏輯的方法。
缺點:由於事務腳本採用的是過程化設計的方法,全部業務邏輯都集中在事務腳本里面。很顯然,將業務邏輯都集中在事務腳本里,違反了面向對象設計中單一職責等設計原則。這使得代碼難以維護和理解,尤爲是業務邏輯複雜的時候。
事務腳本模式雖然有缺點,可是至今仍然有不少開發團隊採用該模式來組織業務層的業務邏輯。當業務邏輯相對比較簡單時,採用事務腳本模式能夠大大加快開發進度。同時,若是開發團隊缺少面向對象設計技能,採用事務腳本模式也是理智的選擇。