天天看點

三層架構與MVC & 設計模式的較量

剛剛學習了三層架構,并且正在實際應用中,但随着學習的深入,又了解到了一個叫MVC的東西,(早在設計模式中就聽到過MVC,僅僅是簡單查了一下什麼意思.)如今正好把這三個東西放在一起聊聊.

三層

是一個分層式的軟體體系架構設計,它可适用于不論什麼一個項目。

它是從整個應用程式架構的角度把程式分為三層UI層,BLL層,DAL層(當然假設程式須要,還能夠分多層)。

三層是為了解決整個應用程式中各個業務操作過程中不同階段的代碼封裝的問題,為了使程式猿更加專注的處理某階段的業務邏輯。

比方将資料庫操作代碼封裝到一層中,提供一些方法依據參數直接傳回使用者須要的對應資料,這樣在處理詳細的業務邏輯的時候。就不用關心資料的存儲問題了。

MVC

全名是Model ViewController,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟體設計典範。

它強制性的使應用程式的輸入、處理和輸出分開。使用MVC應用程式被分成三個核心部件:模型、視圖、控制器。

它們各自處理自己的任務。

     Model(模型)是應用程式中用于處理應用程式資料邏輯的部分。

                通常模型對象負責在資料庫中存取資料。

     View(視圖)是應用程式中處理資料顯示的部分。

               通常視圖是根據模型資料建立的。

     Controller(控制器)是應用程式中處理使用者互動的部分。

              通常控制器負責從視圖讀取資料。控制使用者輸入。并向模型發送資料。

分層有助于管理複雜的應用程式,由于這能夠使我們在一個時間内專門關注一個方面。

比如,能夠在不依賴業務邏輯的情況下專注于視圖設計。同一時候MVC也使應用程式的測試更加easy。

MVC和三層架構是不同的

(就表面知識來說)

三層架構是界面層(UI)業務邏輯層(BLL)和資料訪問層(DAL)構成的,而MVC是模型層(M)界面層(View)和控制層(Controller)構成的,并且他們之間也不是一一相應的.

假設硬要給他們相應的話,那麼三層架構中的UI相應MVC中的view(jsp),都是用于顯示以及擷取界面的資料;三層架構中的BLL層和DAL層相應MVC中的Model(javabean)層都是用于處理上層傳遞來的資料以及從資料庫擷取的資料的。MVC中的Controller(Servlet)最多算是三層架構中的UI的一部分,也就我們常說的是Servlet。

例如以下圖所看到的:

三層架構與MVC & 設計模式的較量

MVC和三層架構是同樣的

(就他們的目的來說)

先驅們為什麼會設計出MVC和三層架構呢?它們有這一個共同的目标!----分層。解耦!

從解耦的角度來看三層架構和MVC事實上他們是一緻的,僅僅隻是劃分的方法不一樣罷了。

這像饅頭和面條。表面上看他們不一樣可是他們核心是一緻的,都是面……

三層&MVC與設計模式的較量

首先MVC不是設計模式,它同三層一樣都是架構級别的,是一種架構模式.

MVC架構與設計模式盡管相似,但卻有着根本的不同。

設計模式是對在某種環境中重複出現的問題以及解決該問題的方案的描寫叙述,它比架構更抽象;架構能夠用代碼表示,也能直接運作或複用。而對模式而言僅僅有執行個體才幹用代碼表示;設計模式是比架構更小的元素。一個架構中往往含有一個或多個設計模式。架構總是針對某一特定應用領域,但同一模式卻可适用于各種應用。

總而言之:架構是大智慧,用來對軟體設計進行分工;設計模式是小技巧。對詳細問題提出解決方式,以提高代碼複用率,減少耦合度。

盡管MVC的學習還沒開始,先提前接觸下,有什麼錯誤的地方請指正!

繼續閱讀