作者: 阮一峰
連結: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、資料庫、運維等。