成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

MVC、MVP 和 MVVM 對(duì)比筆記

paney129 / 825人閱讀

摘要:模型與視圖解耦,編寫(xiě)單元測(cè)試更方便。切實(shí)的將模型綁定到了視圖,這一責(zé)任在中被控制器提前持有了。視圖和視圖模型使用數(shù)據(jù)綁定和事件進(jìn)行通信。觸發(fā)器數(shù)據(jù)觸發(fā)器允許我們進(jìn)一步在視圖狀態(tài)變化后改變我們的對(duì)象屬性。

MVC、MVP 和 MVVM

三個(gè)非常重要的架構(gòu)模式

MVC (Model(模型)-View(視圖)-Controller(控制器))

MVP (Model(模型)-View(視圖)-Presenter(中介者))

MVVM (Model(模型)-View(視圖)-ViewModel(視圖模型))

MVC 模式

MVC 是一個(gè)架構(gòu)設(shè)計(jì)模式,它通過(guò)分離關(guān)注點(diǎn)的方式來(lái)支持改進(jìn)應(yīng)用組織方式。它促成了業(yè)務(wù)數(shù)據(jù)(Models)從用戶(hù)界面(Views)中分離出來(lái),還有第三個(gè)組成部分(Controllers)負(fù)責(zé)管理傳統(tǒng)意義上的業(yè)務(wù)邏輯和用戶(hù)輸入。

Models

Models 管理一個(gè)業(yè)務(wù)應(yīng)的數(shù)據(jù)。它們既與用戶(hù)界面無(wú)關(guān)也與表現(xiàn)層無(wú)關(guān),相反的它們代表了一個(gè)業(yè)務(wù)應(yīng)用所需要的形式唯一的數(shù)據(jù)。當(dāng)一個(gè) model 改變時(shí)(比如當(dāng)它被更新時(shí)),它通常會(huì)通知它的觀察者(比如我們很快會(huì)介紹的 views)一個(gè)改變已經(jīng)發(fā)生了,以便觀察者采取相應(yīng)的反應(yīng)。

Views

視圖是模型的可視化表示,提供了一個(gè)當(dāng)前狀態(tài)的經(jīng)過(guò)過(guò)濾的視圖。JavaScript 的視圖是關(guān)于構(gòu)建和操作 DOM 元素的。

一個(gè)視圖通常是模型的觀察者,當(dāng)模型改變的時(shí)候,視圖得到通知,因此使得視圖可以更新自身。

Controller

控制器是模型和視圖之間的中介,典型的職責(zé)是當(dāng)用戶(hù)操作視圖的時(shí)候同步更新模型。

MVC 模式的優(yōu)勢(shì)

有利于對(duì)應(yīng)用程序中功能進(jìn)行更加簡(jiǎn)單的模塊化。

整體的維護(hù)更加便利,控制器修改數(shù)據(jù),數(shù)據(jù)驅(qū)動(dòng)視圖。

模型與視圖解耦,編寫(xiě)單元測(cè)試更方便。

底層模型和控制器的代碼解耦,可復(fù)用。

分離應(yīng)用程序的體積和角色,允許負(fù)責(zé)核心邏輯的開(kāi)發(fā)者和工作于用戶(hù)界面的開(kāi)發(fā)者同時(shí)進(jìn)行工作。

MVP 模式

模型-視圖-展示器(MVP)是 MVC 設(shè)計(jì)模式的一個(gè)衍生模式,它專(zhuān)注于提升展現(xiàn)邏輯。

Presenter

MVP 中的 P 代表展示器。它是一個(gè)包含視圖的用戶(hù)界面邏輯的組件。不像 MVC,來(lái)自視圖的調(diào)用被委派給了控制器,它是從視圖中解耦出來(lái)的,并且轉(zhuǎn)而通過(guò)一個(gè)接口來(lái)同它進(jìn)行對(duì)話。

在 MVP 中,P 觀察著模型并且當(dāng)模型發(fā)生改變的時(shí)候?qū)σ晥D進(jìn)行更新(被動(dòng)視圖)。P 切實(shí)的將模型綁定到了視圖,這一責(zé)任在 MVC 中被控制器提前持有了。

MVC 模式的優(yōu)劣

相較于 MVC 模式,MVP 的好處在于:

增強(qiáng)應(yīng)用的可測(cè)試性

更加干凈的隔離視圖和模型

劣勢(shì)在于:

缺乏數(shù)據(jù)綁定支持

MVVM 模式

MVVM(Model View ViewModel)是一種基于 MVC 和 MVP 的架構(gòu)模式,它試圖將用戶(hù)界面(UI)從業(yè)務(wù)邏輯和行為中更加清晰地分離出來(lái)。為了這個(gè)目的,很多例子使用聲明變量綁定來(lái)把 View 層的工作從其他層分離出來(lái)。

][3]

ViewModel

視圖模型被認(rèn)為是一個(gè)專(zhuān)門(mén)進(jìn)行數(shù)據(jù)轉(zhuǎn)換的控制器。它可以把對(duì)象信息轉(zhuǎn)換到視圖信息,將命令從視圖攜帶到對(duì)象。

視圖模型位于我們 UI 層后面層。它通過(guò)視圖發(fā)布對(duì)象的公共數(shù)據(jù),同時(shí)它作為視圖源提供數(shù)據(jù)和方法。

視圖和視圖模型使用數(shù)據(jù)綁定和事件進(jìn)行通信。視圖模型不僅僅發(fā)布對(duì)象屬性,它還提供其他的方法和特性,諸如驗(yàn)證。

我們的視圖處理自己的用戶(hù)接口事件,并會(huì)把相關(guān)事件映射到視圖模型。對(duì)象和它屬性與視圖模型是同步的,且通過(guò)雙向數(shù)據(jù)綁定進(jìn)行更新。

觸發(fā)器(數(shù)據(jù)觸發(fā)器)允許我們進(jìn)一步在視圖狀態(tài)變化后改變我們的對(duì)象屬性。

MVVM 模式優(yōu)劣

優(yōu)點(diǎn):

MVVM 更加便于 UI 和驅(qū)動(dòng) UI 的構(gòu)造塊,這兩部分的并行開(kāi)發(fā)

抽象視圖使得背后所需要的業(yè)務(wù)邏輯(或者粘合劑)的代碼數(shù)量得以減少

視圖模型比事件驅(qū)動(dòng)代碼更加容易進(jìn)行單元測(cè)試

視圖模型(比視圖更加像是模型)能夠在不用擔(dān)心 UI 自動(dòng)化和交互的前提下被測(cè)試

缺點(diǎn):

對(duì)于更簡(jiǎn)單的 UI 而言,MVVM 可能矯枉過(guò)正了

雖然數(shù)據(jù)綁定可以是聲明性質(zhì)的并且工作得很好,但在我們簡(jiǎn)單設(shè)置斷點(diǎn)的地方,它們比當(dāng)務(wù)之急的代碼更加難于調(diào)試

在大型的應(yīng)用程序中,將視圖模型的設(shè)計(jì)提升到獲取足夠所需數(shù)量的泛化,會(huì)變得更加的困難

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/103056.html

相關(guān)文章

  • 淺析 web 前端 MVVM

    摘要:它由微軟架構(gòu)師和開(kāi)發(fā),通過(guò)利用微軟圖形系統(tǒng)和的互聯(lián)網(wǎng)應(yīng)用派生品的特性來(lái)簡(jiǎn)化用戶(hù)界面的事件驅(qū)動(dòng)程序設(shè)計(jì)。微軟的和架構(gòu)師之一于年在他的博客上發(fā)表了。更改時(shí)會(huì)得到提醒這個(gè)情況是一個(gè)單向流。 前言 記得四個(gè)月前有一次面試,面試官問(wèn)我 MVVM 是什么,MVVM 的本質(zhì)是什么。我大腦一片混亂,那時(shí)我對(duì) MVVM 的認(rèn)知就只是雙向綁定和Vue,以這個(gè)關(guān)鍵字簡(jiǎn)單回答了幾句,我反問(wèn) MVVM 的本質(zhì)是...

    VincentFF 評(píng)論0 收藏0
  • 一篇文章了解架構(gòu)模式:MVC/MVP/MVVM

    摘要:架構(gòu)模式的文章很多,好理解的沒(méi)有幾個(gè)。沒(méi)有明確的目的理解架構(gòu)模式的真正意義是什么虛擬和組件化在中的位置題目開(kāi)的太大,一定有很多疏忽錯(cuò)誤的地方,也懇請(qǐng)大家指出。因此,模式出現(xiàn)了。然后通過(guò)雙向數(shù)據(jù)綁定使中的狀態(tài)數(shù)據(jù)與中的顯示狀態(tài)保持一致。 架構(gòu)模式的文章很多,好理解的沒(méi)有幾個(gè)。大部分文章出現(xiàn)的主要問(wèn)題有: 沒(méi)有設(shè)定好作用域:前端MVC是改造過(guò)的MVC,和后臺(tái)MVC有明顯的區(qū)別,不能一概...

    bingchen 評(píng)論0 收藏0
  • 一篇文章了解架構(gòu)模式:MVC/MVP/MVVM

    摘要:架構(gòu)模式的文章很多,好理解的沒(méi)有幾個(gè)。沒(méi)有明確的目的理解架構(gòu)模式的真正意義是什么虛擬和組件化在中的位置題目開(kāi)的太大,一定有很多疏忽錯(cuò)誤的地方,也懇請(qǐng)大家指出。因此,模式出現(xiàn)了。然后通過(guò)雙向數(shù)據(jù)綁定使中的狀態(tài)數(shù)據(jù)與中的顯示狀態(tài)保持一致。 架構(gòu)模式的文章很多,好理解的沒(méi)有幾個(gè)。大部分文章出現(xiàn)的主要問(wèn)題有: 沒(méi)有設(shè)定好作用域:前端MVC是改造過(guò)的MVC,和后臺(tái)MVC有明顯的區(qū)別,不能一概...

    darcrand 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<