1模型-視圖-控制器模式(Model View Controller)服務器
計算機程序在用戶界面方面曾經極大地限制了用戶的使用。在上世紀70年代, 一個計算機程序只能使用命令行與用戶交互。而今天的程序已經使用上了豐富的圖形界面,用戶可使用視窗、鼠標以及鍵盤等多種方式進行交互,它容許移動和改變某個元素。加強的用戶界面提供出了新的挑戰,而Model View Controller (或MVC) 模式就是專一於這個領域的,他幫助咱們建立更具備靈活性的程序。動畫
程序由用戶界面、事件邏輯以及數據模型組成。例如,標準的UI 組件中列表框和組合框就包括界面元素 (點擊區域、滾動條等等)、有關如何響應用戶輸入的邏輯機理、還有數據模型 (組件中包含的數據)。雖然有三種明確的元素,可是一般狀況下,開發者編寫代碼時更傾向於把全部元素集合在一個對象中,而不是由幾個對象來聯合工做。若是界面和數據統一在一個對象中,那麼它將致使一下弊端:spa
以上全部的問題都是由於數據和用戶界面被鎖定在同一個對象中。而MVC 模式提供了一種方式,讓你能夠建立兩個及以上的對象來一塊兒工做。這種方法讓你的代碼能夠重複使用,從而建立極富靈活性的程序。命令行
2理解 MVC 元素對象
MVC 模式由三個子系統組成: 模型, 視圖以及控制器。在接下來的幾個部分,咱們將分別瞭解這幾個元素。而後咱們將瞭解他們是如何一塊兒工做的。 當咱們談論一個模型的用途,一個視圖的用途以及一個控制器的用途的時候,咱們稱他爲MVC 分組。blog
模型就是在MVC 組合中用來儲存數據的元素。模型就是數據的倉庫,他獨立於視圖和控制器。它既能夠儲存元數據,好比字符串, 也能夠儲存複雜的數據。模型與視圖和控制器沒有任何關聯,這正是MVC 模式的一個特有機能,由於模型的獨立性正是MVC模式的靈活之處。事件
視圖是用戶界面的可視化部分。視圖使用數據模型的數據來繪製本身。一個視圖由動畫、用戶輸入表單、圖表、按鈕、聲音播放器或者其餘須要的任何類型的用戶界面組成。開發
理解視圖的關鍵是理解它僅僅由可視化元素以及用來讀取與使用數據模型的必要邏輯組成。
控制器是負責獲取輸入內容 (例如,用戶輸入) 和更新模型或視圖的子系統。例如,若是模型須要更新數據,那麼控制器就是作這個的。
每一個元素與其餘元素之間都是一種特定的關係。模型始終與視圖和控制器保持獨立。這意味着模型不能與其餘任何元素髮生關係,可是不意味着模型不會與其餘元素通訊。當數據更新時,模型就會廣播消息。可是,重要的是模型僅僅廣播消息,而並不會設法搞清楚究竟誰在偵聽。事件的使用容許模型減小與其餘元素的關聯程度,從而爲靈活性提供了可能。
視圖老是要設法與模型發生關聯。視圖以兩種方式與模型交互: 偵聽數據更新的消息,並從模型讀取數據。但視圖不能向模型寫入數據。每一個視圖僅僅與他的模型保持一種關聯。由於視圖能夠與他的模型發生關聯,可是模型不能與使用他的視圖發生關聯,因此一個模型能夠成爲多個視圖的模型。
控制器也須要與模型發生關聯。控制器負責根據用戶輸入或者系統事件更新模型。
控制器與視圖之間的關係很是緊密。雖然能夠幾個視圖使用一個控制器,可是一般視圖和控制器之間的關係是一對一的。視圖包含了全部的用於用戶交互的界面元素。而控制器是響應用戶輸入的元素。在許多ActionScript 程序中,視圖和控制器是同一個類。而MVC 模式的這種變化常常被稱爲MVC的文檔視圖Document View執行。
MVC 模式的關鍵在於數據模型獨立於控制器和視圖而沒有任何關聯。視圖基於數據模型的改變而更新(刷新)。