如何設計一個程序的結構,這是一門專門的學問,叫作"架構模式"(architectural pattern),屬於編程的方法論。html
MVC模式就是架構模式的一種,它不只適用於開發軟件,也適用於其餘普遍的設計和組織工做。web
MVC是三個單詞的首字母縮寫,它們是Model(模型)、View(視圖)和Controller(控制)。編程
這個模式認爲,程序不論簡單或複雜,從結構上看,均可以分紅三層。小程序
- 最上面的一層,是直接面向最終用戶的"視圖層"(View)。它是提供給用戶的操做界面,是程序的外殼。
- 最底下的一層,是核心的"數據層"(Model),也就是程序須要操做的數據或信息。
- 中間的一層,就是"控制層"(Controller),它負責根據用戶從"視圖層"輸入的指令,選取"數據層"中的數據,而後對其進行相應的操做,產生最終結果。
這三層是緊密聯繫在一塊兒的,但又是互相獨立的,每一層內部的變化不影響其餘層。架構
每一層都對外提供接口(Interface),供上面一層調用。這樣一來,軟件就能夠實現模塊化,修改外觀或者變動數據都不用修改其餘層,大大方便了維護和升級。mvc
以Windows的計算器小程序爲例,解釋一下MVC模式,雖然它不必定使用這個模式編寫。模塊化
在這個計算器程序中,外部的那些按鈕和最上面的顯示條,就是"視圖層",那些須要運算的數字就是"數據層",執行加減乘除的那些內部運算步驟就是"控制層"。優化
每一層執行不一樣的功能,整個程序的結構很是清楚。spa
若是咱們擴大一點想象,就會發現,不少程序本質上都是這種模式:對外提供一組觸發器(本例中是按鈕),而後執行一些內部操做,最後返回結果。設計
所以,MVC模式的應用是很是普遍的。
不只編寫程序能夠用MVC模式,家用電器也能夠用。
以家用微波爐爲例,能夠將它也理解成三層結構。
最簡單的狀況下,微波爐的操做用兩個轉盤實現,一個控制溫度,另外一個控制時間。這兩個轉盤就是"視圖層"(view),而其內部的微波產生裝置則是"數據層"(Model),這裏的"數據"須要理解成"核心功能"。至於將用戶經過轉盤輸入的信息,轉換成對微波產生器的操做,則用"控制層"來實現。
若是每一層都是獨立的,那麼微波爐外部更換一個新潮的外殼,或者內部更換更大功率的微波產生器,徹底能夠在不更改其餘層的狀況下實現。這就是MVC模式的優點。
若是將MVC模式解釋成"外觀"、"機制"和"功能/數據"這三層結構,那麼不少人類組織也能夠經過MVC模式架構。
好比一家商場,徹底能夠分紅三部分。一部分是倉庫,負責提供商品,這是"功能層"(或者"數據層");另外一部分是零售鋪面,負責銷售商品,這是它的"外觀層";二者之間就是"機制層",包括櫃檯和倉庫之間一切互動的機制。
這樣區分之後,這個商場的結構就變得很是清楚,能夠針對不一樣的層進行優化,提升效率。