※J.Y Chen 的個人部落格 ※

Just Follow Our Heart And We will shine!

217 瀏覽人次

【軟體設計模式】Model,View,Controller 架構 (MVC )

Published: in Knowledge by .

Model,View,Controller 架構 (MVC )

在應用程式開發的領域裡,相當重視「關注點分離 (separation of concerns, SOC) 」的設計原則,從字面上的意思,就是把整個應用程式分拆成不同功能層 (layer) 或程式碼模組 (module),每個區塊有各自的關注點,彼此分工合作。

什麼是MVC?

Model、View、Controller的區分,是希望能把應用程式的內部運作歸納成不同的部門,讓每個部門各自負責不同的關注點。

換句話說,就是把「不同意義的程式碼放在不同的檔案裡」

MVC架構程式有以下幾點優點:

Model

Model 常被翻譯成「模型」,負責和資料庫溝通。

這裡我們要先注意:

  1. 應用程式和資料庫是兩個不同東西。
  2. 要做「增刪改查(CRUD)」的動作就先需有Model層幫忙去資料庫裡取出必要的資料,把資料放進應用程式的某個程式物件。

Model 這種放資料、與資料庫連動的物件,會被稱為Model物件,由Model層來統一管理。

Model 管理的功能層被稱做「邏輯層」,更明確一點說,是和「商業邏輯」有關的功能


Example

  1. 會員購物有九折、訂單超過一定的金2. 額免運費,檢查登入帳號的類型,並依此開放不同權限

View

也就是前端所呈現的程式碼部分

View 常譯為「視圖」,View 所管理的功能層叫作「表現層 (presentation layer)」,顧名思義是負責管理畫面的呈現,也就是 HTML 樣板 (template)。

View 在此則是擔任將 Model 視覺化的要角。 View 需要去執行 UI 相關的工作,或當 user 與 app 互動時與 Controller 溝通。 他不會參與到太多有關邏輯運算的工作,也不需知道 user 與 app 互動時的狀態為何。

Controller

透過GET/POST…等來接受所需處理所傳送的資料。

Controller 常譯為「控制器」,它掌握使用者互動邏輯,也是應用程式收發 request/response 的核心。來自路由的 request 會先被送到 Controller,再由 Controller 通知 Model 調度資料,並且把資料傳遞給 View 來產生樣板 (template),並將呈現資料的 HTML 頁面回傳給客戶端。

你可以把 Controller 想做是 MVC 架構的中間人,它決定了應用程式的工作流程 (workflow),並且蒐集不同元件的工作結果,統一回傳給使用者。以下常見的設計問題,會由 Controller 來控制:

在 Controller 上會設置很多不同的「動作 (action)」,有點類似電視遙控器上的按鈕,只要觸發了不同的 action,Controller 就會啟動後續一系列的行為。

MVC架構的資料夾編排方式 (藍色:View)

©2019 - 2024 Henry Chen