三層架構(gòu)與MVC簡(jiǎn)單區(qū)分

我們平時(shí)總是將三層架構(gòu)與MVC混為一談,殊不知它倆并不是一個(gè)概念。

首先,它倆根本不是一個(gè)概念。

  • 三層架構(gòu)是一個(gè)分層式的軟件體系架構(gòu)設(shè)計(jì),它可適用于任何一個(gè)項(xiàng)目。
  • MVC是一個(gè)設(shè)計(jì)模式,它是根據(jù)項(xiàng)目的具體需求來決定是否適用于該項(xiàng)目。
  • 那么架構(gòu)跟設(shè)計(jì)模式有什么區(qū)別呢?
  • 我們從接手一個(gè)項(xiàng)目開始,首先,我們需要進(jìn)行架構(gòu)設(shè)計(jì),一般我們采用的就是分層式的架構(gòu)設(shè)計(jì),即我們的三層架構(gòu)。
      然后,在確定了架構(gòu)以后,我們?cè)俑鶕?jù)項(xiàng)目的具體需求去考慮是否需要應(yīng)用一些設(shè)計(jì)模式,比如是否應(yīng)用我們的MVC模式,抽象工廠模式等等。(在這里我們看出,MVC與三層架構(gòu)不是一個(gè)等級(jí)的,而與抽象工廠等設(shè)計(jì)模式才是一路的)
      最后,確定了模式以后,就是我們的一些具體的實(shí)現(xiàn)了。(當(dāng)然一個(gè)項(xiàng)目不僅僅考慮這些問題,我只是為了說明兩者的區(qū)別,將其他問題已省略)
    其次,它倆劃分的層次不同。
      三層架構(gòu)將整個(gè)項(xiàng)目劃分為:表現(xiàn)層(UI)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問層(DAL)。
      MVC 即Model(模型),View(視圖),Controller(控制)。
      下面看一下他倆的區(qū)別與聯(lián)系:



      通過這個(gè)圖我們可以知道,我們平常所說的V是UI,C是BLL,M是DAL的觀點(diǎn)是錯(cuò)誤的。
      而我們通常所見到的MVC一般也都是在應(yīng)用三層架構(gòu)的基礎(chǔ)上,即將Model層再進(jìn)行分層。而如果Model不再進(jìn)行劃分的話,那么使用MVC的意義也就不大了。

然后,它倆的目的著重點(diǎn)不同。

三層架構(gòu)的目的著重點(diǎn)是“高內(nèi)聚,低耦合”,即解耦。
  MVC的目的則是實(shí)現(xiàn)Web系統(tǒng)的職能分工,即職責(zé)劃分。
  其實(shí)職責(zé)劃分也是解耦,但是三層側(cè)重的是整體的一個(gè)解耦,而MVC側(cè)重的是web系統(tǒng)的解耦,即側(cè)重jsp和Servlet的一個(gè)解耦。

最后,為何我們會(huì)將其混為一談?

既然兩者有這么多的不同,我們?yōu)槭裁催€總是將其混淆呢,下面我列舉了幾個(gè)我們常常將其混為一談的幾個(gè)原因:
  1.二者都是“三層”。
  這個(gè)原因是最容易迷惑我們初學(xué)者的,一個(gè)是UI,BLL,DAL,一個(gè)是View,Controller,Model,不都是三層嗎?
  雖然都是“三層”(不一定是真的三層,還可以是多層),但是它們的劃分的不一樣。大家可從上面的圖中看出不同。
  2.MVC總是伴隨著三層架構(gòu)。
  這個(gè)就是我在前面一再強(qiáng)調(diào)的,我們一般是在考慮使用(也可以不使用)了三層架構(gòu)的基礎(chǔ)上再根據(jù)具體需求決定是否需要使用MVC,于是我們常說的MVC中總是伴隨著三層架構(gòu),所以大家總是會(huì)認(rèn)為MVC就是三層架構(gòu),三層架構(gòu)就是MVC,殊不知,它們二者是一起出現(xiàn)的。
  3.都是在分層,即都是在解耦。
  前面說它們目的的時(shí)候也說了,雖然它們的側(cè)重點(diǎn)不同,但是它們的總體目的是一樣的,都是為了解耦,對(duì)于初學(xué)者而言,是不知道這兩個(gè)側(cè)重點(diǎn)有何不同的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 又看到有人在問三層架構(gòu)和MVC的關(guān)系,感覺這種問題有點(diǎn)教條化了。因?yàn)樗鼈兌荚谶壿嬌蠈?yīng)用程序劃為三塊,湊了一個(gè)數(shù)字...
    Ludiwgbet閱讀 2,038評(píng)論 1 12
  • 三層架構(gòu)和MVC是有明顯區(qū)別的,MVC應(yīng)該是展現(xiàn)模式(三個(gè)加起來以后才是三層架構(gòu)中的UI層) 三層架構(gòu)(3-tie...
    李大西瓜閱讀 392評(píng)論 0 0
  • 三層架構(gòu)和MVC 三層架構(gòu) (3-tier application) 是將整個(gè)業(yè)務(wù)應(yīng)用劃分為:表現(xiàn)層(UI)、業(yè)務(wù)...
    hnscdg閱讀 1,871評(píng)論 0 8
  • 1.從傳統(tǒng)三層架構(gòu)與DDD分層架構(gòu)的編程演變其實(shí)是思想的演變。 傳統(tǒng)三層架構(gòu),即用戶界面層UI、業(yè)務(wù)邏輯層BAL、...
    咖啡電視閱讀 8,592評(píng)論 0 6
  • 一、MVC與三層架構(gòu)的異同 1.不同點(diǎn) 三層架構(gòu)是程序設(shè)計(jì)的一種典型架構(gòu)方式,確立項(xiàng)目后首先做的是對(duì)其進(jìn)...
    LQC閱讀 4,781評(píng)論 0 3

友情鏈接更多精彩內(nèi)容