# MVC 模式 (Model–view–controller) ## 什麼是 MVC? * 軟體工程中的一種軟體架構模式,把軟體系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。 [論文出處](https://web.archive.org/web/20100921030808/http://www.itu.dk/courses/VOP/E2005/VOP2005E/8_mvc_krasner_and_pope.pdf) ## MVC 架構 * 目的是實現一種動態的程式設計,便於後續對程式的修改和擴充簡化,並且使程式某一部分的程式碼可以重複利用。 - 例如:使用者希望能透過瀏覽器來收發電子郵件,還能手機來存取電子信箱,甚至能透過 MAC 查看等等,在MVC設計模式中,Model 回應使用者請求並返迴對應資料,View 負責格式化資料並把它們呈現給用戶,同一個 Model 可以被不同的 View 共享,所以大大提高了代碼的可重用性。 * 除此之外,此模式透過對複雜度的簡化,使程式結構更加直覺。 1. 控制器(Controller):負責轉發請求,對請求進行處理。 2. 視圖(View): 介面設計人員進行圖形介面設計。 3. 模型(Model): 程式設計師編寫程式應有的功能(實現演算法等等)、資料庫專家進行資料管理和資料庫設計(可以實現具體的功能)。  舉例來說,在 MVC 模式中,當使用者會透過 APP 或 Web 介面來操作系統,在他按下一個按鈕或是觸發某一個動作時,這時候就會藉由Controller來將我們的Model進行狀態的改變,然後選擇對應的View來呈現UI的部分,這時候View會將剛剛被Controller修改過的Model呈現到使用者的面前。 簡單簡化後的流程: 1. User 透過介面發出請求。 2. Controller截獲使用者發出的請求。 3. Controller呼叫Model完成狀態的讀寫操作。 4. Controller把資料傳遞給View。 5. View渲染最終結果並呈獻給使用者。 * MVC需要經過良好的設計,才能將工作分割的相當完美,所以在早期MVC架構推廣相當不易,對於小型專案更是困難。對於小型專案的開發者來說,在建構與維護MVC的架構上必須花費很多的時間,所花費的成本遠大於小型專案的成本;而對於大型專案,雖然MVC的架構有利於後續的發展及維護,但因入門門檻高,導致許多專案打退堂鼓。 現今,由於MVC的架構及維護方式日趨簡易且一致, 因此逐漸成為開發主流方式之一。 * 優點: 1. 程式的結構更加直覺化。 2. 降低維護的複雜度,系統更加方便管理。 3. 關注點分離:在個別不同的部分,做各自的事情而互不影響結果。 * 假設你今天在處理使用者操作介面,那就專心的套版,將Controller傳回來的資料看要怎麼擺放 * 假設在處理資料流傳入的參數驗證,那就在Controller處理完,不用去管會不會影響到View的呈現 * 假設是跟資料庫的溝通,就在Model裡將它實作好,不需要擔心是否參數有空值或Null, 因為那些該是在Controller處理掉的。 4. 將程式的修改與功能擴充簡化,提高了程式的發展性,以利於團隊開發。 * 缺點: 1. 用於小型專案成本高 2. 要管理的文件增加 3. 事前須嚴謹的規劃系統架構 4. 增加了系統結構和實現的復雜性 ## 開發自己的 MVC 模型 * 在PHP語言中,大多數的開發人員都是使用MVC模型去開發 Web,所以我們以PHP語言為基礎開Web Application,一方面練習PHP,一方面加深對MVC模型的核心理念的理解。 1. **把目錄結構設定好:** 1. 隨便先建立一個資料夾,命名專案名稱,ex: /phpMVC,在這資料夾下建立 - /application : 存放web應用程式目錄 - /framework : 存放框架檔案目錄 - /public : 存放所有的公共的靜態資源,比如HTML檔案,CSS檔案和jJS檔案。 - index.php : 網頁唯一入口檔案。  2. 在application資料夾下再建立下一層的目錄 - /config : 存放應用的配置檔案 - /controllers : 應用的控制器類 - /model : 應用的模型類 - /view : 應用的檢視檔案 - 在/controllers資料夾下,我們還需要建立兩個資料夾來分別處裡前後端作業,一個frontend,一個backend。 - 在view下也建立frontend和backend資料夾。  3. 回到/framework資料夾中,建立 4 個子目錄: - /core-框架核心檔案目錄 - /database-資料庫目錄(比如資料庫啟動類) - /helpers-輔助函式目錄 - /libraries-類庫目錄  4. 在/public資料夾,建立 4 個目錄 - /css-存放css檔案 - /images-存放圖片檔案 - /js-存放js檔案 - /uploads-存放上傳的檔案  **到這裡為止我們就建好 MVC 模型的目錄結構了!** 3. 待補充 * 待補充
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up