摘要:同時(shí),在技術(shù)層面,也帶來(lái)了諸如等新特性。接收用戶交互請(qǐng)求將請(qǐng)求轉(zhuǎn)交給操作數(shù)據(jù)更新更新完數(shù)據(jù),通知數(shù)據(jù)發(fā)生變化更新數(shù)據(jù)低耦合。開發(fā)人員可以專注于業(yè)務(wù)邏輯和數(shù)據(jù)的開發(fā),設(shè)計(jì)人員可以專注于頁(yè)面設(shè)計(jì),生成代碼。
MVC
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。MVC被獨(dú)特的發(fā)展起來(lái)用于映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。
View 接受用戶交互請(qǐng)求 View 將請(qǐng)求轉(zhuǎn)交給Controller Controller 操作Model進(jìn)行數(shù)據(jù)更新數(shù)據(jù)更新之后,Model通知View更新 數(shù)據(jù)變化 View 更新變化數(shù)據(jù)
在MVC模型里,Model不依賴于View, 但是 View是依賴于Model的。不僅如此, 因?yàn)橛幸恍I(yè)務(wù)邏輯在View里實(shí)現(xiàn)了,導(dǎo)致要更改View也是比較困難的, 至少那些業(yè)務(wù)邏輯是無(wú)法重用的
MVPMVP的全稱為Model-View-Presenter,Model提供數(shù)據(jù),View負(fù)責(zé)顯示,Controller/Presenter負(fù)責(zé)邏輯的處理。MVP與MVC有著一個(gè)重大的區(qū)別:在MVP中View并不直接使用Model,它們之間的通信是通過(guò)Presenter (MVC中的Controller)來(lái)進(jìn)行的,所有的交互都發(fā)生在Presenter內(nèi)部,而在MVC中View會(huì)直接從Model中讀取數(shù)據(jù)而不是通過(guò) Controller。
View 接收用戶交互請(qǐng)求 View 將請(qǐng)求轉(zhuǎn)交給 Presenter Presenter 操作Model進(jìn)行數(shù)據(jù)更新 Model通知Presenter數(shù)據(jù)發(fā)生變化 Presenter 更新View數(shù)據(jù)
Model與View完全分離,修改互不影響 更高效地使用,因?yàn)樗械倪壿嫿换ザ?發(fā)生在一個(gè)地方—Presenter內(nèi)部一個(gè)Preseter可用于多個(gè)View,而不需要改 變Presenter的邏輯(因?yàn)閂iew的變化總 是比Model的變化頻繁)。更便于測(cè)試。把邏輯放在Presenter中,就可以脫離用 戶接口來(lái)測(cè)試邏輯(單元測(cè)試)
MVVMMVVM是Model-View-ViewModel的簡(jiǎn)寫。微軟的WPF帶來(lái)了新的技術(shù)體驗(yàn),如Silverlight、音頻、視頻、3D、動(dòng)畫……,這導(dǎo)致了軟件UI層更加細(xì)節(jié)化、可定制化。同時(shí),在技術(shù)層面,WPF也帶來(lái)了 諸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由來(lái)便是MVP(Model-View-Presenter)模式與WPF結(jié)合的應(yīng)用方式時(shí)發(fā)展演變過(guò)來(lái)的一種新型架構(gòu)框架。它立足于原有MVP框架并且把WPF的新特性糅合進(jìn)去,以應(yīng)對(duì)客戶日益復(fù)雜的需求變化。
View 接收用戶交互請(qǐng)求 View 將請(qǐng)求轉(zhuǎn)交給ViewModel ViewModel 操作Model數(shù)據(jù)更新 Model更新完數(shù)據(jù), 通知ViewModel數(shù)據(jù)發(fā)生變化 ViewModel 更新View數(shù)據(jù)
低耦合。View可以獨(dú)立于Model變化和修改,一個(gè)ViewModel可以綁定到不同的”View”上,當(dāng)View變化的時(shí)候Model可以不變,當(dāng)Model變化時(shí)候View也可以不變。?
可重用性。你可以把一些視圖邏輯放在一個(gè)ViewModel里面,讓很多view重用這段視圖邏輯。?
獨(dú)立開發(fā)。開發(fā)人員可以專注于業(yè)務(wù)邏輯和數(shù)據(jù)的開發(fā)(ViewModel),設(shè)計(jì)人員可以專注于頁(yè)面設(shè)計(jì),生成xml代碼。
可測(cè)試。界面素來(lái)是比較難于測(cè)試的,而現(xiàn)在測(cè)試可以針對(duì)ViewModel來(lái)寫。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/98930.html
摘要:如何同步的變更。在沒(méi)有環(huán)境下對(duì)進(jìn)行單元測(cè)試的時(shí)候,業(yè)務(wù)邏輯的正確性是無(wú)法驗(yàn)證的更新的時(shí)候,無(wú)法對(duì)的更新操作進(jìn)行斷言。對(duì)是通過(guò)接口進(jìn)行,在對(duì)進(jìn)行不依賴環(huán)境的單元測(cè)試的時(shí)候。這里根據(jù)上面的例子給出了的單元測(cè)試樣例。 前言 做客戶端開發(fā)、前端開發(fā)對(duì)MVC、MVP、MVVM這些名詞不了解也應(yīng)該大致聽過(guò),都是為了解決圖形界面應(yīng)用程序復(fù)雜性管理問(wèn)題而產(chǎn)生的應(yīng)用架構(gòu)模式。 網(wǎng)上很多文章關(guān)于這方面的討...
摘要:模型與視圖解耦,編寫單元測(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(視圖)...
摘要:的模式之間不同主要是與的數(shù)據(jù)傳遞的流程不同。所以無(wú)論是復(fù)雜化簡(jiǎn)單化還是修改流程,基本都是因?yàn)榧夹g(shù)棧變化了對(duì)應(yīng)做的調(diào)整。實(shí)例實(shí)際項(xiàng)目往往采用更靈活的方式,以為例。用戶可以向發(fā)送指令事件,再由直接要求改變狀態(tài)。與不發(fā)生聯(lián)系,都通過(guò)傳遞。 概述 M -V- X 本質(zhì)都是一樣的 重點(diǎn)還是在于M-V 的橋梁要靠 X來(lái)牽線。 X的模式之間不同 主要是 M與V 的數(shù)據(jù)傳遞的流程不同。數(shù)據(jù)傳遞的流程不...
摘要:,的事件回調(diào)函數(shù)中調(diào)用的操作方法。以為例調(diào)用關(guān)系模式實(shí)際就是將中的改名為,調(diào)用過(guò)程基本一致,最大的改良是間的雙向綁定。和間,有一個(gè)對(duì)象,可以操作修改,使用。 參考:MVC,MVP 和 MVVM 的圖示 - 阮一峰http://www.ruanyifeng.com/blo...Web開發(fā)的MVVM模式http://www.cnblogs.com/dxy198...界面之下:還原真實(shí)的MV...
閱讀 3422·2023-04-25 22:44
閱讀 926·2021-11-15 11:37
閱讀 1632·2019-08-30 15:55
閱讀 2639·2019-08-30 15:54
閱讀 1080·2019-08-30 13:45
閱讀 1430·2019-08-29 17:14
閱讀 1853·2019-08-29 13:50
閱讀 3402·2019-08-26 11:39