歡迎光臨
每天分享高質量文章

談談 MVC 樣式

作者: 阮一峰 

鏈接:http://www.ruanyifeng.com/blog/2007/11/mvc.html

1.

如何設計一個程式的結構,這是一門專門的學問,叫做”架構樣式”(architectural pattern),屬於編程的方法論。

MVC樣式就是架構樣式的一種,它對我的啟發特別大。我覺得它不僅適用於開發軟體,也適用於其他廣泛的設計和組織工作。



下麵是我對MVC樣式的一些個人理解,不一定正確,主要用來整理思路。


2.

MVC是三個單詞的首字母縮寫,它們是Model(模型)、View(視圖)和Controller(控制)。

這個樣式認為,程式不論簡單或複雜,從結構上看,都可以分成三層。


1)最上面的一層,是直接面向最終用戶的”視圖層”(View)。它是提供給用戶的操作界面,是程式的外殼。

2)最底下的一層,是核心的”資料層”(Model),也就是程式需要操作的資料或信息。

3)中間的一層,就是”控制層”(Controller),它負責根據用戶從”視圖層”輸入的指令,選取”資料層”中的資料,然後對其進行相應的操作,產生最終結果。


這三層是緊密聯繫在一起的,但又是互相獨立的,每一層內部的變化不影響其他層。每一層都對外提供接口(Interface),供上面一層呼叫。這樣一來,軟體就可以實現模塊化,修改外觀或者變更資料都不用修改其他層,大大方便了維護和升級。


3.

我用Windows的計算器小程式為例,解釋一下MVC樣式,雖然它不一定使用這個樣式編寫。

在這個計算器程式中,外部的那些按鈕和最上面的顯示條,就是”視圖層”,那些需要運算的數字就是”資料層”,執行加減乘除的那些內部運算步驟就是”控制層”。每一層執行不同的功能,整個程式的結構非常清楚。

如果我們擴大一點想象,就會發現,很多程式本質上都是這種樣式:對外提供一組觸發器(本例中是按鈕),然後執行一些內部操作,最後傳回結果。因此,MVC樣式的應用是非常廣泛的。


4.

在我看來,不僅編寫程式可以用MVC樣式,家用電器也可以用。

以家用微波爐為例,可以將它也理解成三層結構。最簡單的情況下,微波爐的操作用兩個轉盤實現,一個控制溫度,另一個控制時間。這兩個轉盤就是”視圖層”(view),而其內部的微波產生裝置則是”資料層”(Model),這裡的”資料”需要理解成”核心功能”。至於將用戶通過轉盤輸入的信息,轉換成對微波產生器的操作,則用”控制層”來實現。

如果每一層都是獨立的,那麼微波爐外部更換一個新潮的外殼,或者內部更換更大功率的微波產生器,完全可以在不更改其他層的情況下實現。這就是MVC樣式的優勢。


5.

再進一步,如果將MVC樣式解釋成”外觀”、”機制”和”功能/資料”這三層結構,那麼很多人類組織也可以通過MVC樣式架構。

比如一家商場,完全可以分成三部分。一部分是倉庫,負責提供商品,這是”功能層”(或者”資料層”);另一部分是零售鋪面,負責銷售商品,這是它的”外觀層”;兩者之間就是”機制層”,包括櫃臺和倉庫之間一切互動的機制。

這樣區分以後,這個商場的結構就變得非常清楚,可以針對不同的層進行優化,提高效率。


6.

公司、政黨、政府、醫院、學校等等,這些組織不管是盈利性還是非盈利性的,都可以從MVC樣式的角度,進行架構,由一個個執行特定功能、可重覆使用的模塊組成。

我在想,如果人類社會都是模塊化結構,那會是怎樣的情景?


●編號326,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

演算法與資料結構

更多推薦18個技術類公眾微信

涵蓋:程式人生、演算法與資料結構、黑客技術與網絡安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

赞(0)

分享創造快樂