我們平時總是將三層架構與MVC混為一談,殊不知它倆並不是一個概念.下面我來為大家揭曉我所知道的一些真相.
首先,它倆根本不是一個概念.
三層架構是一個分層式的軟體體系架構設計,它可適用於任何一個項目.
MVC是一個設計模式,它是根據項目的具體需求來決定是否適用於該項目.
那麼架構跟設計模式有什麼區別呢?
我們從接手一個項目開始,首先,我們需要進行架構設計,一般我們採用的就是分層式的架構設計,即我們的三層架構.
然後,在確定了架構以後,我們再根據項目的具體需求去考慮是否需要應用一些設計模式,比如是否應用我們的MVC模式,抽象工廠模式等等.(在這裡我們看出,MVC與三層架構不是一個等級的,而與抽象工廠等設計模式才是一路的)
,確定了模式以後,就是我們的一些具體的實現了.(當然一個項目不僅僅考慮這些問題,我只是為了說明兩者的區別,將其他問題已省略)
其次,它倆劃分的層次不同.
三層架構將整個項目劃分為:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL).
MVC即Model(模型),View(視圖),Controller(控制).
下面看一下他倆的區別與聯繫:
通過這個圖我們可以知道,我們平常所說的V是UI,C是BLL,M是DAL的觀點是錯誤的.
而我們通常所見到的MVC一般也都是在應用三層架構的基礎上,即將Model層再進行分層.而如果Model不再進行劃分的話,那麼使用MVC的意義也就不大了.
然後,它倆的目的著重點不同.
三層架構的目的著重點是「高內聚,低耦合」,即解耦.
MVC的目的則是實現Web系統的職能分工,即職責劃分.
其實職責劃分也是解耦,但是三層側重的是整體的一個解耦,而MVC側重的是web系統的解耦,即側重jsp和Servlet的一個解耦.
,為何我們會將其混為一談?
既然兩者有這麼多的不同,我們為什麼還總是將其混淆呢,下面我列舉了幾個我們常常將其混為一談的幾個原因:
1.二者都是「三層」.
這個原因是最容易迷惑我們初學者的,一個是UI,BLL,DAL,一個是View,Controller,Model,不都是三層嗎?
雖然都是「三層」(不一定是真的三層,還可以是多層),但是它們的劃分的不一樣.大家可從上面的圖中看出不同.
[火星人 ] 三層架構與MVC謎團之答案揭曉已經有2659次圍觀