分層設計的軟體系統,由于把相似功能的類或元件放在同一層裡。是以好的分層系統應該具備:層的内部“高内聚”,層與層之間是“松耦合”的。隻有符合這樣的一個設計原則的軟體系統,才能具有可複用性和可擴充性。是以,降低層間“耦合度”就成軟體設計的目标,能夠設計出“松耦合”的系統,就意味着我們的系統具備可複用性和可擴充性,這樣的系統就能夠滿足的使用者不斷變化的需求。從設計角度我們可以将一個應用系統(一般是資訊系統)分成四層結構如圖所示。接下來我們将一一介紹各層之間的含義。

<a>表示層</a>
表示層是使用者與系統互動的元件集合,使用者通過這一層向系統送出請求或發出指令,系統通過這一層接收使用者請求或指令,然後,根據請求指令調用服務層,再根據調用的結果,将相應的内容展現到表示層。表示層應該是輕薄的,不應該具有業務邏輯。如果我們的系統是一個web系統的話,我們采用的技術有html、jsp和servlet等,也可以使用mvc架構,例如struts等架構技術。這時我們将表示層稱為web層更準确一點。無論采用什麼技術表示層都應該是輕薄的,不應該具有業務邏輯。也就是說無論我們使用jsp、servlet作為表示層還是使用swing作為表示層都應該是輕薄的。
<a>服務層</a>
服務層是系統的核心業務處理層,負責接收表示層的指令和資料,根據業務邏輯的需要調用相應的持久層,并将結果傳回給表示層。為了降低表示層和服務層的耦合問題,我們會在兩層之間引入接口,然後在運作期注入依賴關系。服務層一般使用的技術有會話ejb、消息ejb和javabean。
<a>資料持久層</a>
資料持久層用于通路資料庫,資料持久層中一般是通過dao(資料通路對象設計模式)通路資料庫的,也是為了降低耦合度,dao被設計為接口,dao實作可以是jdbc,也可以使用一些orm架構如hibernate等。除了使用dao以外,我們也可以使用ejb中的實體ejb實作資料持久化。
eis層即企業資訊系統層,是系統的資料來源層。它們可以是資料庫、檔案和其它的系統,多數情況下是指的是資料庫。