MVC 三層架構 是什麼? 我只知道三層肉

Simiao Chen
4 min readAug 28, 2019

--

三層肉是一種豬肉,常見於各種台灣滷肉飯及韓國鐵板烤肉的食材區XDD

那三層架構是什麼呢??

三層架構是一種常見的B/S軟體架構設計。

分成表現層(Presentation Layer)、業務邏輯層(Business Layer)跟

資料訪問層(Data Access Layer)。

一個軟體或網頁的開發大概幾個大步驟,

(1)首先讓使用者看到畫面,並進行操作。(表現層)

(2)接下來拿到使用者輸入的資料,進行業務邏輯的處理。(業務邏輯層)

(3)與資料庫互動,做增刪改查。(資料訪問層)

(4)最後讓使用者看到相對應的成功畫面。

3層架構便是基於以上的概念設計的,以下個別介紹他們…

三層架構基本介紹

表現層(Presentation Layer) :

表現層前台 :

-介面顯示、與用戶互動

- JSP、JS、HTML…Web前端技術(通常位於WebContent資料夾)

表現層後台 :

-用於控制頁面跳轉、調用業務邏輯層

-Servlet、SpringMVC的Controller、Struts2…(xxx.servlet包中)

2. 業務邏輯層(Business Layer)

-接收表現層的請求與調用

-業務邏輯的撰寫(例如想刪除某user,先查詢是否有此user再進行刪除)

-調用資料訪問層進行資料庫的操作,拿到相關資料並進行處理

-通常稱為Service層(程式放在xxx.Service包)

3. 資料訪問層(Data Access Layer)

-直接對資料庫進行增刪改查等原子性的操作(不可再分割)

-DAO屬於此層,程式通常放在xxx.Dao包

舉個實際例子

當使用者進到我們的網站,註冊會員,輸入他的帳號密碼,此時由"表現層"做畫面的顯示及獲取使用者輸入的資料。然後調用"業務邏輯層"的service進行業務邏輯運算。service此時調用"資料訪問層"的DAO去查詢資料庫中是否已經有這個帳號,service則根據是否已有相同帳號做不同的處理,若無則新增一筆進入資料庫,並顯示註冊成功畫面(表現層),若有則不新增資料到資料庫,且在畫面上提醒使用者換一個帳號。

這樣就完成了整個接收到響應的過程了~~

分層很麻煩,我可以全部寫在同一支class嗎 ?

初學者的確是覺得全部寫在一起比較簡單,但日後隨著系統越來越大功能越來越多,絕對會非常悔不當初XDD

以下是一個經典的例子~

user購物結帳前要登入,你在一支class中寫了登入+結帳。

如果要查詢訂單要登入,你在一支class中寫了登入+查詢訂單。

在領取優惠碼也要登入,你在一支class中寫了登入+領取優惠碼。

如果你每次都不辭辛勞的這樣寫也是蠻讓人佩服的,但如果今天登入的功能有小改動大概會瘋掉…

例如account這個table多了一個重要欄位,每次登入成功時多查出這個欄位,那你就必須在之前寫過且分散在50支class的登入功能全部改一次…

比較好的做法是,當初把業務邏輯寫在各個對應的service,操作不同table這個步驟寫則在各個DAO中,此時要多查出一個欄位的話就只要改動那個DAO即可。

結論

開發時如果不想分層當然是可以的,但維護起來絕對會讓人白眼無極限。

分層的話雖然一開始會覺得麻煩,但好處是解耦合及提高程式的複用率,後續會好處理很多。

--

--