1. 程式人生 > >MVC模型和MTV模型

MVC模型和MTV模型

MVC模型


MVC 設計模型是一種使用 Model View Controller( 模型-檢視-控制器)設計建立 Web 應用程式的模式。

Model(模型):是應用程式中用於處理應用程式資料邏輯的部分。
    通常模型物件負責在資料庫中存取資料。

View(檢視):是應用程式中處理資料顯示的部分。
    通常檢視是依據模型資料建立的。

Controller(控制器):是應用程式中處理使用者互動的部分。
    通常控制器負責從檢視讀取資料,控制使用者輸入,並向模型傳送資料。

MVC的優缺點
優點

把業務邏輯全部分離到Controller中,模組化程度高。當業務邏輯變更的時候,不需要變更View和Model,只需要Controller換成另外一個Controller就行了 。
觀察者模式可以做到多檢視同時更新。
缺點

Controller測試困難。因為檢視同步操作是由View自己執行,而View只能在有UI的環境下執行。在沒有UI環境下對Controller進行單元測試的時候,Controller業務邏輯的正確性是無法驗證的:Controller更新Model的時候,無法對View的更新操作進行斷言。
View無法元件化。View是強依賴特定的Model的,如果需要把這個View抽出來作為一個另外一個應用程式可複用的元件就困難了。因為不同程式的的Domain Model是不一樣的


MTV模型

FLask用的是MTV的模式
所謂的MTV ( Model–Template–View ),翻譯一下就是模型、模板、檢視。
一般是使用者通過瀏覽器向我們的伺服器發起一個請求(request),
這個請求回去訪問檢視函式,(如果不涉及到資料呼叫,那麼這個時候檢視函式返回一個模板也就是一個網頁給使用者),檢視函式呼叫模型,模型去資料庫查詢資料,然後逐級返回,檢視函式把返回的資料填充到模板中空格中,最後返回網頁給使用者。

Django的MTV模式
Django的MTV模式的本質和MVC是一樣的,也是為了各元件間保持鬆耦合關係,只是定義有些不同,

Django的MTV分別是

M 帶包模型(Model) 負責業務物件和資料庫的關係對映(ORM)
T 代表模板(Template) 負責如何把頁面展示給使用者(html)
V 代表檢視 (View) 負責業務邏輯 並在適當時候呼叫Model和Template
除了以上三層外,還需要一個URL分發器、他的作用是將一個個URL的頁面請求分發給不同的View處理,web伺服器(中介軟體)收到一個http請求

1.Django在URLconf裡查詢對應的檢視(view)函式來處理http請求
2.檢視函式呼叫相應的資料模型來儲存資料、呼叫相應的模板向用戶展示頁面
3.檢視函式處理結束後返回一個http的相應給web伺服器

4.web 伺服器將響應傳送給客戶端

MTV的響應模式如下:
1,中介軟體接收到一個http請求
2,django在url路由系統中查詢對應的檢視來處理http請求
3,檢視函式呼叫對應的model模型來儲存資料、呼叫相應的模板來展示頁面