MVC 架構
引用自 WiKi: MVC模式(Model–view–controller)是軟件工程中的一種軟件架構模式,把軟件系統分爲三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。
結構示意圖
通過下圖可以看到,
- 視圖(View)層: 一般指可視化界面
- 模型(Model)層: 指業務邏輯
- 控制器(Controller)層: 用來調度View層和Model層,起到橋接的作用。
MVC的核心
框架設計的最終都是以實現代碼的可維護行、可分離性,以及可複用性爲目的的。
將代碼組織結構分爲此三層,就是要儘可能將各層相互分離,降低代碼耦合性,提高代碼的可複用性。當用戶操作界面(View)時,View層會先將數據傳遞給Controller層,然後Controller再將數據轉發給Modal。
可以試想,如果要製作一個可複用的組件庫,首要考慮的就是組件的通用性。如果視圖和模型相互糅合,那麼通用性必然大大降低。因此,分層設計就有了必要性。
MVC的應用
MVC結構應用很廣泛,諸如程序和生活中都存在這種模型的身影。
舉一個簡單的例子,比如我們常用到的計算器。
計算器所展示的圖形界面就相當於我們的View層,當我們輸入數字進行一些操作的時候,這些數字就是Modal層,而Controller就是要去處理這些操作的邏輯。然後Controller返回處理好的結果,重新展示到View中。每個層次分工明確,結構非常清晰。
擴展與思考
如果我們將這種模型進行抽象,可以得出:
- 模型(Model)層: 存儲的數據倉庫
- 視圖(View)層: 提供一系列可操作的外部接口可供調用
- 控制器(Controller)層: 調用接口後,獲取數據,然後進行處理返回給視圖
舉個實際例子,例如: 小商販在地攤上(View)擺滿了貨物(Modal),路人看到心儀的物件時,就指(用戶行爲)給商販要買那個物品。商販就把對應商品拿給買家(Controller),同時,地攤上的商品少了一件(視圖更新)。這樣,一筆買賣就交易完成了,對應的MVC機制是不是也容易理解了一些呢?