摘要:模型與視圖解耦,編寫單元測試更方便。切實的將模型綁定到了視圖,這一責任在中被控制器提前持有了。視圖和視圖模型使用數據綁定和事件進行通信。觸發器數據觸發器允許我們進一步在視圖狀態變化后改變我們的對象屬性。
MVC、MVP 和 MVVM
三個非常重要的架構模式
MVC (Model(模型)-View(視圖)-Controller(控制器))
MVP (Model(模型)-View(視圖)-Presenter(中介者))
MVVM (Model(模型)-View(視圖)-ViewModel(視圖模型))
MVC 模式MVC 是一個架構設計模式,它通過分離關注點的方式來支持改進應用組織方式。它促成了業務數據(Models)從用戶界面(Views)中分離出來,還有第三個組成部分(Controllers)負責管理傳統意義上的業務邏輯和用戶輸入。
ModelsModels 管理一個業務應的數據。它們既與用戶界面無關也與表現層無關,相反的它們代表了一個業務應用所需要的形式唯一的數據。當一個 model 改變時(比如當它被更新時),它通常會通知它的觀察者(比如我們很快會介紹的 views)一個改變已經發生了,以便觀察者采取相應的反應。
Views視圖是模型的可視化表示,提供了一個當前狀態的經過過濾的視圖。JavaScript 的視圖是關于構建和操作 DOM 元素的。
一個視圖通常是模型的觀察者,當模型改變的時候,視圖得到通知,因此使得視圖可以更新自身。
Controller控制器是模型和視圖之間的中介,典型的職責是當用戶操作視圖的時候同步更新模型。
MVC 模式的優勢有利于對應用程序中功能進行更加簡單的模塊化。
整體的維護更加便利,控制器修改數據,數據驅動視圖。
模型與視圖解耦,編寫單元測試更方便。
底層模型和控制器的代碼解耦,可復用。
分離應用程序的體積和角色,允許負責核心邏輯的開發者和工作于用戶界面的開發者同時進行工作。
MVP 模式模型-視圖-展示器(MVP)是 MVC 設計模式的一個衍生模式,它專注于提升展現邏輯。
PresenterMVP 中的 P 代表展示器。它是一個包含視圖的用戶界面邏輯的組件。不像 MVC,來自視圖的調用被委派給了控制器,它是從視圖中解耦出來的,并且轉而通過一個接口來同它進行對話。
在 MVP 中,P 觀察著模型并且當模型發生改變的時候對視圖進行更新(被動視圖)。P 切實的將模型綁定到了視圖,這一責任在 MVC 中被控制器提前持有了。
MVC 模式的優劣相較于 MVC 模式,MVP 的好處在于:
增強應用的可測試性
更加干凈的隔離視圖和模型
劣勢在于:
缺乏數據綁定支持
MVVM 模式MVVM(Model View ViewModel)是一種基于 MVC 和 MVP 的架構模式,它試圖將用戶界面(UI)從業務邏輯和行為中更加清晰地分離出來。為了這個目的,很多例子使用聲明變量綁定來把 View 層的工作從其他層分離出來。
][3]
ViewModel視圖模型被認為是一個專門進行數據轉換的控制器。它可以把對象信息轉換到視圖信息,將命令從視圖攜帶到對象。
視圖模型位于我們 UI 層后面層。它通過視圖發布對象的公共數據,同時它作為視圖源提供數據和方法。
視圖和視圖模型使用數據綁定和事件進行通信。視圖模型不僅僅發布對象屬性,它還提供其他的方法和特性,諸如驗證。
我們的視圖處理自己的用戶接口事件,并會把相關事件映射到視圖模型。對象和它屬性與視圖模型是同步的,且通過雙向數據綁定進行更新。
觸發器(數據觸發器)允許我們進一步在視圖狀態變化后改變我們的對象屬性。
MVVM 模式優劣優點:
MVVM 更加便于 UI 和驅動 UI 的構造塊,這兩部分的并行開發
抽象視圖使得背后所需要的業務邏輯(或者粘合劑)的代碼數量得以減少
視圖模型比事件驅動代碼更加容易進行單元測試
視圖模型(比視圖更加像是模型)能夠在不用擔心 UI 自動化和交互的前提下被測試
缺點:
對于更簡單的 UI 而言,MVVM 可能矯枉過正了
雖然數據綁定可以是聲明性質的并且工作得很好,但在我們簡單設置斷點的地方,它們比當務之急的代碼更加難于調試
在大型的應用程序中,將視圖模型的設計提升到獲取足夠所需數量的泛化,會變得更加的困難
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103056.html
摘要:它由微軟架構師和開發,通過利用微軟圖形系統和的互聯網應用派生品的特性來簡化用戶界面的事件驅動程序設計。微軟的和架構師之一于年在他的博客上發表了。更改時會得到提醒這個情況是一個單向流。 前言 記得四個月前有一次面試,面試官問我 MVVM 是什么,MVVM 的本質是什么。我大腦一片混亂,那時我對 MVVM 的認知就只是雙向綁定和Vue,以這個關鍵字簡單回答了幾句,我反問 MVVM 的本質是...
摘要:架構模式的文章很多,好理解的沒有幾個。沒有明確的目的理解架構模式的真正意義是什么虛擬和組件化在中的位置題目開的太大,一定有很多疏忽錯誤的地方,也懇請大家指出。因此,模式出現了。然后通過雙向數據綁定使中的狀態數據與中的顯示狀態保持一致。 架構模式的文章很多,好理解的沒有幾個。大部分文章出現的主要問題有: 沒有設定好作用域:前端MVC是改造過的MVC,和后臺MVC有明顯的區別,不能一概...
摘要:架構模式的文章很多,好理解的沒有幾個。沒有明確的目的理解架構模式的真正意義是什么虛擬和組件化在中的位置題目開的太大,一定有很多疏忽錯誤的地方,也懇請大家指出。因此,模式出現了。然后通過雙向數據綁定使中的狀態數據與中的顯示狀態保持一致。 架構模式的文章很多,好理解的沒有幾個。大部分文章出現的主要問題有: 沒有設定好作用域:前端MVC是改造過的MVC,和后臺MVC有明顯的區別,不能一概...
閱讀 3285·2021-11-24 09:39
閱讀 3866·2021-11-22 09:34
閱讀 4799·2021-08-11 11:17
閱讀 1060·2019-08-29 13:58
閱讀 2570·2019-08-28 18:18
閱讀 537·2019-08-26 12:24
閱讀 825·2019-08-26 12:14
閱讀 727·2019-08-26 11:58