# 分層架構
分層架構(layered architecture)是常見的軟件架構,也是事實上的標準架構,如果說你不知道用什么架構,那么最簡單的就是使用這種架構方式。
這種架構將軟件分成若干個水平層,每一層都有清晰的角色和分工,不需要知道其他層的具體細節,層和層之間通過接口通信。
雖然沒有明確約定,軟件一定要分成多少層,但是四層的結構是最常見的了。

> * 表現層(Presentation Layer):用戶界面,負責和用戶互動
> * 業務層(Bussiness):實現業務邏輯
> * 持久層(Persistence):提供數據,SQL語句就放在這一層
> * 數據層(Database):保存數據
有的軟件在邏輯層和持久層之間,增加了一個服務層(Service),提供不同業務邏輯需要的一些通用接口。
用戶的請求將以此通過這四層的處理,不能跳過其中的任何一層。

優點
> * 結構簡單,容易理解和開發
> * 不同技能的程序員可以分工,負責不同的層,天然適合大多數軟件公司的組織架構
> * 每一層都可以獨立測試,其它層的接口通過模擬解決
缺點
> * 一旦換件發生變化,需要代碼調整或增加功能的時候,通常比較麻煩和費時
> * 部署比較麻煩,即使只修改一個小地方,往往需要整改軟件重新部署,不容易做持續發布
> * 軟件升級時,可能需要整改服務暫停
> * 擴展性差。用戶請求大量增加的時候,必須依次擴展每一層,由于每一層內部是耦合的,擴展會很困難