天天看點

MVC與三層架構聯系與差別

引言:

使用Eclipse開發工具寫Java Web項目時會發現,一個中型或者大型項目 随着代碼的增多,會發現:代碼既可以寫在src目錄下,也可以寫在WebContent目錄下。src下可以建很多包 ,WebContent下可以建很多檔案夾。

是以問題就來了:一個新的類 到底往哪個目錄下的哪個檔案夾裡寫?

此時解決辦法就是:需要一個模式去規範,到底哪個類該往哪裡寫。

MVC設計模式:

MVC與三層架構聯系與差別

視圖View:

負責頁面的顯示;與使用者的互動。包含各種表單。 實作視圖用到的技術有html/css/jsp/js等前端技術。

使用者互動:使用者滑鼠點選頁面;填寫頁面中各種表單…等等

模型Model:

模型負責各個功能的實作(如登入、增加、删除功能)。模型用JavaBean實作。

JavaBeans :

①是Java中一種特殊的類(換言之:JavaBean就是一個Java類).

一個Java類 ,滿足以下要求,則可稱為一個JavaBean

  a. public修飾的類,提供public 無參構造方法

  b. 所有屬性 都是private

  c. 提供getter和setter方法


②從使用層面來看,JavaBean分為2大類:

  a. 封裝業務邏輯的JavaBean (eg:LoginDao.java 封裝了登入邏輯)

  b. 封裝資料的JavaBean (實體類:eg:Student.java  Vedio.java 。往往對應于資料庫中的一張表,即資料庫中有個Student表,項目中就有個Student.java類)

  
③JavaBean 是一個可以重複使用的元件,通過編寫一個元件來實作某種通用功能,“一次編寫、任何地方執行、任何地方重用”。
           

控制器Controller:

控制器負責将視圖與模型一一對應起來。相當于一個模型分發器。所謂分發就是:①接收請求,并将該請求跳轉(轉發,重定向)到模型進行處理。②模型處理完畢後,再通過控制器,傳回給視圖中的請求處。建議使用Servlet實作控制器。

三層架構:

首先來說,三層架構與MVC的目标一緻:都是為了解耦和、提高代碼複用。MVC是一種設計模式,而三層架構是一種軟體架構。

三層架構分為:表現層(UI)(web層)、業務邏輯層(BLL)(service層)、資料通路層(DAL)(dao層) ,再加上實體類庫(Model)

1.實體類庫(Model),在Java中,往往将其稱為Entity實體類。資料庫中用于存放資料,而我們通常選擇會用一個專門的類來抽象出資料表的結構,類的屬性就一對一的對應這表的屬性。

·一般來說,Model實體類庫層需要被DAL層,BIL層和UI層引用。

2.資料通路層(DAL),主要是存放對資料類的通路,即對資料庫的添加、删除、修改、更新等基本操作

·DAL就是根據業務需求,構造SQL語句,構造參數,調用幫助類,擷取結果,DAL層被BIL層調用

3.業務邏輯層(BLL)

·BLL層好比是橋梁,将UI表示層與DAL資料通路層之間聯系起來。所要負責的,就是處理涉及業務邏輯相關的問題,比如在調用通路資料庫之前,先處理資料、判斷資料。

BLL層隻被UIL層引用

  1. 使用者表現層(UIL),就是使用者看到的主界面。

各層引用關系如下圖所示:

MVC與三層架構聯系與差別

MVC與三層架構的對應關系,圖示如下:

MVC與三層架構聯系與差別