MVC由三部分組成:模型層(model),視圖層(view),控制層(controller)。
其實光從這三部分的名字就可以看出個大概,模型層嘛,肯定是與數據庫有關,視圖層,嗯,視圖,肯定和眼睛看有關,控制層,應該偏向和邏輯掛鉤吧。如果能想到這樣其實應該還不錯,哈哈哈。
然後我們來具體從一個Web應用例子的交互邏輯來談一談MVC:
我們假設!假設!假設!百度網站就是基於MVC模式構建的(假設哦),小明想用百度查一查關於汽車的信息,於是輸入了關鍵詞“汽車”,搜索了很多與汽車相關的信息,這些展示在小明面前的頁面,小明看到的頁面、數據信息這些其實就可以看成視圖層。
但是其實在小明點擊了搜索之後,“汽車”這個關鍵詞是傳入到了服務器應用,然後服務器根據“汽車”這個關鍵詞,到數據庫中去拿關於汽車的數據,拿到數據後,再將數據交給前端去渲染出來,呈現在小明的面前,這個服務器接收前端指令然後根據指令獲取數據再將數據返回給前端的過程就可以理解爲控制層。
至於最後一個模型層呢?控制層中到數據庫中去獲取數據就要通過模型層才能實現與數據庫之間的交互。由此可見模型層就是負責與數據庫直接進行交互的。
再理一理這個例子邏輯就是:小明通過視圖層向控制層發來了“汽車”這個關鍵詞,告訴控制層我要獲取所有的汽車相關的信息,控制層收到後,通知模型層,你去把數據庫中所有的關於汽車的信息給我拿出來,模型層從數據庫拿到所有數據後,將數據交給控制層,控制層再將數據交給視圖層,視圖層將數據渲染出來,呈現在小明的面前。
其實這樣就可以看出:視圖層是負責與用戶交互的,模型層是負責與數據庫交互的,而控制層是將視圖層和模型層聯繫在一起。
當然這個例子過於簡單,很多都簡化了,在實際的開發中可能要複雜得多,但是大概的模式就是這樣。
但是我們不難看出MVC模式具有很多的優點得以讓它如此的流行:
- 低耦合性:各層各自獨立,假設如果需要修改視圖層的顯示效果,根本不用去修改控制層或者模型層。
- 可維護性高:各層之間相互獨立的特點使得維護工作變得相對輕鬆。
- 利於開發分工:由於各層相互獨立,可以明確的進行分工。
- 可重用性高:比如多個視圖可以共享一個模型。