這表明了層與層之間的調用關系,表示層通過調用業務層來完成任務,而業務層則調用持久層。從另壹個角度來看,壹種依賴關系是
表示層 --> 領域模型(Domain Model) <-- 持久層
即表示層和持久層都應該理解(recognize)領域模型。而領域模型則是業務層的壹部分。業務層正是系統的價值所在。雖說表示和持久也很重要,在某些系統中可以說是很關鍵,但是它們的最終目的都是為業務服務,所以業務層應該是系統的核心。
基於以上的認識,在系統設計的時應首先分析需求得到領域模型,找出系統中的實體、對象(靜態的壹面),並明確大致的業務流程(動態的壹面)。 而另兩層應盡最大努力為業務層服務,且盡量減少業務層受另兩層的限制。
各層的職責:
表示層:負責顯示信息,及從系統外部得到輸入。表示層的設計決定系統界面的可用性,及信息輸入和展示的可靠性。表示層只知道如何展示信息,及收集用戶輸入,並不知道該如何對這些輸入進行處理來完成業務。
業務層:完成業務邏輯。業務層設計決定客戶價值是否能夠得到實現。這是系統的關鍵。外在的表現是功能性。業務層設計和實現的失誤表現在用戶端即功能缺失,功能不可靠等。如果需要對業務層的業務規則進行解耦,則可以使用規則引擎如Drools,把業務規則分離出來。但分離後的業務規則仍屬於業務層。業務層知道如何對用戶輸入進行處理,能夠應用業務規則完成用戶所需的業務,但它不知道數據如何讀取和保存。
持久層:負責用戶信息的持久化。持久層的失誤表現在外即數據處理(儲存,展示等)不可靠。持久層完全不知道業務,只專註於數據存儲和讀取。所謂持久化並不壹定是指數據庫,任何方式的持久化(通過文件,網絡的持久化等)都應由持久層完成。
各層的設計都會直接影響系統性能。