Java中三層架構與MVC之間的顯著區別

來源:互聯網
上載者:User

我們平時總是將三層架構與MVC混為一談,殊不知它倆並不是一個概念。下面我來為大家揭曉我所知道的一些真相。

首先,它倆根本不是一個概念。

  三層架構是一個分層式的軟體體系架構設計,它可適用於任何一個項目。MVC是一個設計模式,它是根據項目的具體需求來決定是否適用於該項目。

  那麼架構跟設計模式有什麼區別呢?我們從接手一個項目開始,首先,我們需要進行架構設計,一般我們採用的就是分層式的架構設計,即我們的三層架構。

  然後,在確定了架構以後,我們再根據項目的具體需求去考慮是否需要應用一些設計模式,比如是否應用我們的MVC模式,抽象原廠模式等等。(在這裡我們看出,MVC與三層架構不是一個等級的,而與抽象工廠等設計模式才是一路的)

  最後,確定了模式以後,就是我們的一些具體的實現了。(當然一個項目不僅僅考慮這些問題,我只是為了說明兩者的區別,將其他問題已省略)

其次,它倆劃分的層次不同。

  三層架構將整個項目劃分為:表現層(UI)、商務邏輯層(BLL)、資料訪問層(DAL)。MVC即Model(模型),View(視圖),Controller(控制)。

  下面看一下他倆的區別與聯絡:

650) this.width=650;" style="width:543px;height:310px;" src="http://www.bkjia.com/uploads/allimg/131228/14294J944-0.jpg" border="0" height="310" width="543" alt="af610b6b8fb13bbe6df10d0db869b840.jpg" />

  通過這個圖我們可以知道,我們平常所說的V是UI,C是BLL,M是DAL的觀點是錯誤的。

  而我們通常所見到的MVC一般也都是在應用三層架構的基礎上,即將Model層再進行分層。而如果Model不再進行劃分的話,那麼使用MVC的意義也就不大了。

  然後,它倆的目的著重點不同。三層架構的目的著重點是“高內聚,低耦合”,即解耦。

  MVC的目的則是實現Web系統的職能分工,即職責劃分。其實職責劃分也是解耦,但是三層側重的是整體的一個解耦,而MVC側重的是web系統的解耦,即側重jsp和Servlet的一個解耦。最後,為何我們會將其混為一談?

  既然兩者有這麼多的不同,我們為什麼還總是將其混淆呢,下面我列舉了幾個我們常常將其混為一談的幾個原因:

  1.二者都是“三層”。

  這個原因是最容易迷惑我們初學者的,一個是UI,BLL,DAL,一個是View,Controller,Model,不都是三層嗎?

  雖然都是“三層”(不一定是真的三層,還可以是多層),但是它們的劃分的不一樣。大家可從上面的圖中看出不同。

  2.MVC總是伴隨著三層架構。

  這個就是我在前面一再強調的,我們一般是在考慮使用(也可以不使用)了三層架構的基礎上再根據具體需求決定是否需要使用MVC,於是我們常說的MVC中總是伴隨著三層架構,所以大家總是會認為MVC就是三層架構,三層架構就是MVC,殊不知,它們二者是一起出現的。

  3.都是在分層,即都是在解耦。

  前面說它們目的的時候也說了,雖然它們的側重點不同,但是它們的總體目的是一樣的,都是為瞭解耦,對於初學者而言,是不知道這兩個側重點有何不同的


本文出自 “想要跨越,就要付出更多” 部落格,請務必保留此出處http://andywuchuanlong.blog.51cto.com/4898493/1301974

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.