一直以為 MVC 和三層架構是同一個東西,直到今天才明確的知道:MVC 是 MVC,三層架構是三層架構, 它們之間毫無關系。
三層架構
三層架構是系統級別的,基于業務,如下圖:
真正的三層架構.JPG
整個過程:展示層發送請求到 Controller,Controller 收到請求后交給相應的 Service 去查詢對應的數據,并將結果返回給展示層,最后展示層將數據顯示在頁面上。
三層架構是為了解決整個應用程序中各個業務過程中不同階段的代碼封裝問題,包括:展示層、業務邏輯層、持久層。其中, 低層不能調用上層;同層之間可以互相調用(持久層、Controller 除外)。
特點:
- 低耦合
- 可維護
- 有了利于軟件工程化管理
缺點:
- 內部結構復雜,不容易理解,文件數量大。
MVC
MVC 用于創建在域對象和 UI 表示層對象之間的區分,基于展示層的設計模式。
MVC.png
M:Model(模型層),主要負責業務邏輯以及數據庫的交換
V:View(視圖),用于顯示數據和提交數據
C:Controller(控制器),用于捕獲請求并控制請求轉發
各部分之間的通信都是雙向的。View 與 Model 不發生聯系,都通過 Presenter 傳遞。View 非常薄,不部署任何業務邏輯。
各個層的作用:
- 控制器的作用是調用模型,并調用視圖,將模型產生的數據傳遞給視圖。并讓相關視圖去顯示。
- 模型的作用是獲取數據并處理數據。
- 視圖的作用是將取得的數據進行組織、美化等,并最終向用戶終端輸出。
好處:分離了關注點。后臺代碼被移到單獨的類文件,可以最大限度的重復利用代碼。
缺點:
- 不適合小型應用
- 增加系統結構和實現的復雜性
聯系與區別
- 聯系
- V 相當于展示層;C 相當于展示層和業務邏輯層之間的 Controller;M 相當于業務邏輯層和持久層。
聯系.png
- 都是為了解耦
- 區別
- 三層架構試試軟件架構,通過接口實現
- MVC 是一個設計模式——解決方案
- 三層模式試試體系結構模式,MVC 是設計模式
MVC 和 三層架構相同的設計理念就是:把視圖設計與數據持久化進行分離,從而降低耦合性,易于擴展,提高團隊開發效率。三層架構和 MVC 設計模式側重點不一樣,三層是一種籠統的架構思想,沒有限制具體的設計;而 MVC 就比較具體的說明它的設計方法。