MVC架構

很多程式語言都有框架來實現MVC架構
例如: Java, Python, Ruby, PHP

MVC

圖片來源
The Ping Relationship of Model, View, and Controller(MVC)

拿Ruby的Ruby on rails做MVC架構的做說明
M:Model
Model本身不是資料庫,只是處理資料數據的管理,包括從資料庫中搜尋數據、將數據儲存到資料庫中、更新數據、刪除數據等。
它也負責數據的驗證,譬如以下範例

1
2
3
4
5
6
7
class User < ApplicationRecord
validates :name, presence: true
<!-- 使用者必須填寫名字,不得為空白 -->
validates :age, numericality: { only_integer: true, greater_than_or_equal_to: 18 }
<!-- 使用者年齡必須為數字,數字必須為整數,而且大於等於18 -->
end

Model會去資料庫調閱資料,在資料庫查詢到的東西是raw data,找到資料之後交給Controller。

V:View
負責將數據呈現給使用者,以便使用者在網站上查看並和網站互動。這包括顯示文字、圖片、表格、表單元素等,以呈現數據和內容。
View將Model中的原始數據轉換為使用者看得懂的格式。
例如,將日期和時間格式化為可讀的形式,將數字格式化為貨幣或百分比等。

C:Controller
接收來自使用者的HTTP請求,這些請求可以包括瀏覽網頁、提交表單、點擊按鈕等。根據請求的不同類型和內容來決定應該執行哪些操作。
最主要的職責在Model和View之間做一個溝通橋樑,居中協調。當Controller接收到請求時,找到對應的Model拿到資料數據,然後將處理後的數據傳遞給View呈現出來(數據透過html、css呈現給使用者觀看)

為什麼使用MVC架構呢?
有以下特色

關注點分離:MVC 將應用程序分成三個主要部分,每個部分都有不同的職責。這有助於保持程式碼的結構性和可維護性。模型(Model)處理數據和資料邏輯,視圖(View)負責使用者界面,控制器(Controller)處理使用者輸入以及協調Model和View之間的資料數據傳遞。關注點分離使程式碼更容易理解和修改。

可維護性:由於 MVC 將不同的功能分開,因此更容易進行單元測試和調用。開發人員可以專注於單個部分,而不必擔心整個應用程序的運作。這有助於降低錯誤的風險並提高程式碼的可維護性。