精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一篇文章讓你了解 MVC、MVP 、MVVM

開發(fā) 前端
MVC全名是Model--View--Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。

MVC

MVC全名是Model--View--Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。其中Model層處理數(shù)據(jù),業(yè)務(wù)邏輯等;View層處理界面的顯示結(jié)果;Controller層起到橋梁的作用,來控制View層和Model層通信以此來達(dá)到分離視圖顯示和業(yè)務(wù)邏輯層。

一篇文章讓你徹底了解 MVC、MVP 、MVVM

我們往往把Android中界面部分的實(shí)現(xiàn)也理解為采用了MVC框架,常常把Activity理解為MVC模式中的Controller。

看似沒有什么特別的地方,但是由幾個(gè)需要特別關(guān)注的關(guān)鍵點(diǎn):

View是把控制權(quán)交移給Controller,自己不執(zhí)行業(yè)務(wù)邏輯。

Controller執(zhí)行業(yè)務(wù)邏輯并且操作Model,但不會(huì)直接操作View,可以說它是對(duì)View無知的。

View和Model的同步消息是通過觀察者模式進(jìn)行,而同步操作是由View自己請(qǐng)求Model的數(shù)據(jù)然后對(duì)視圖進(jìn)行更新。

MVC的優(yōu)缺點(diǎn)

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

把業(yè)務(wù)邏輯全部分離到Controller中,模塊化程度高。當(dāng)業(yè)務(wù)邏輯變更的時(shí)候,不需要變更View和Model,只需要Controller 換成另外一個(gè)Controller就行了(Swappable Controller)。

觀察者模式可以做到多視圖同時(shí)更新。

缺點(diǎn):

Controller測試?yán)щy。因?yàn)橐晥D同步操作是由View自己執(zhí)行,而View只能在有UI的環(huán)境下運(yùn)行。在沒有UI環(huán)境下對(duì)Controller進(jìn)行單元測試的時(shí)候, Controller業(yè)務(wù)邏輯的正確性是無法驗(yàn)證的:Controller更新Model的時(shí)候,無法對(duì)View的更新操作進(jìn)行斷言。

View無法組件化。View是強(qiáng)依賴特定的Model的,如果需要把這個(gè)View抽出來作為一個(gè)另外一個(gè)應(yīng)用程序可復(fù)用的組件就困難了。因?yàn)椴煌绦虻牡腄omain Model是不一樣的

MVP

MVP其實(shí)是MVC的一種演進(jìn)版本,它更簡單,將MVC中的Controller改為了Presenter,View通過接口與Presenter進(jìn)行交互,降低耦合,方便進(jìn)行單元測試。

View:負(fù)責(zé)繪制UI元素、與用戶進(jìn)行交互(Activity、View、Fragment都可以做為View層);

Model:對(duì)數(shù)據(jù)的操作、對(duì)網(wǎng)絡(luò)等的操作,和業(yè)務(wù)相關(guān)的邏輯處理;

Presenter:作為View與Model交互的中間紐帶,處理與用戶交互的邏輯。可以把Presenter理解為一個(gè)中間層的角色,它接受Model層的數(shù)據(jù),并且處理之后傳遞給View層,還需要處理View層的用戶交互等操作。

一篇文章讓你徹底了解 MVC、MVP 、MVVM

關(guān)鍵點(diǎn):

View不再負(fù)責(zé)同步的邏輯,而是由Presenter負(fù)責(zé)。Presenter中既有業(yè)務(wù)邏輯也有同步邏輯。

View需要提供操作界面的接口給Presenter進(jìn)行調(diào)用。(關(guān)鍵)

對(duì)比在MVC中,Controller是不能操作View的,View也沒有提供相應(yīng)的接口;而在MVP當(dāng)中,Presenter可以操作View,View需要提供一組對(duì)界面操作的接口給Presenter進(jìn)行調(diào)用;Model仍然通過事件廣播自己的變更,但由Presenter監(jiān)聽而不是View。

MVP(Passive View)的優(yōu)缺點(diǎn)

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

便于測試。Presenter對(duì)View是通過接口進(jìn)行,在對(duì)Presenter進(jìn)行不依賴UI環(huán)境的單元測試的時(shí)候。可以通過Mock一個(gè)View對(duì)象,這個(gè)對(duì)象只需要實(shí)現(xiàn)了View的接口即可。然后依賴注入到Presenter中,單元測試的時(shí)候就可以完整的測試Presenter業(yè)務(wù)邏輯的正確性。

View可以進(jìn)行組件化。在MVP當(dāng)中,View不依賴Model。這樣就可以讓View從特定的業(yè)務(wù)場景中脫離出來,可以說View可以做到對(duì)業(yè)務(wù)邏輯完全無知。它只需要提供一系列接口提供給上層操作。這樣就可以做高度可復(fù)用的View組件。

缺點(diǎn):

Presenter中除了業(yè)務(wù)邏輯以外,還有大量的View->Model,Model->View的手動(dòng)同步邏輯,造成Presenter比較笨重,維護(hù)起來會(huì)比較困難。

MVVM

MVVM模式(Model--View--ViewModel模式),和MVP模式相比,MVVM 模式用ViewModel替換了Presenter ,其他層基本上與 MVP 模式一致,ViewModel可以理解成是View的數(shù)據(jù)模型和Presenter的合體。

MVVM采用雙向綁定(data-binding):View的變動(dòng),自動(dòng)反映在ViewModel,反之亦然,這種模式實(shí)際上是框架替應(yīng)用開發(fā)者做了一些工作(相當(dāng)于ViewModel類是由庫幫我們生成的),開發(fā)者只需要較少的代碼就能實(shí)現(xiàn)比較復(fù)雜的交互。

一篇文章讓你徹底了解 MVC、MVP 、MVVM

MVVM的調(diào)用關(guān)系

MVVM的調(diào)用關(guān)系和MVP一樣。但是,在ViewModel當(dāng)中會(huì)有一個(gè)叫Binder,或者是Data-binding engine的東西。以前全部由Presenter負(fù)責(zé)的View和Model之間數(shù)據(jù)同步操作交由給Binder處理。你只需要在View的模版語法當(dāng)中,指令式地聲明View上的顯示的內(nèi)容是和Model的哪一塊數(shù)據(jù)綁定的。當(dāng)ViewModel對(duì)進(jìn)行Model更新的時(shí)候,Binder會(huì)自動(dòng)把數(shù)據(jù)更新到View上去,當(dāng)用戶對(duì)View進(jìn)行操作(例如表單輸入),Binder也會(huì)自動(dòng)把數(shù)據(jù)更新到Model上去。這種方式稱為:Two-way data-binding,雙向數(shù)據(jù)綁定。可以簡單而不恰當(dāng)?shù)乩斫鉃橐粋€(gè)模版引擎,但是會(huì)根據(jù)數(shù)據(jù)變更實(shí)時(shí)渲染。

關(guān)鍵點(diǎn):

MVVM把View和Model的同步邏輯自動(dòng)化了。以前Presenter負(fù)責(zé)的View和Model同步不再手動(dòng)地進(jìn)行操作,而是交由框架所提供的Binder進(jìn)行負(fù)責(zé)。

只需要告訴Binder,View顯示的數(shù)據(jù)對(duì)應(yīng)的是Model哪一部分即可。

MVVM的優(yōu)缺點(diǎn)

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

提高可維護(hù)性。解決了MVP大量的手動(dòng)View和Model同步的問題,提供雙向綁定機(jī)制。提高了代碼的可維護(hù)性。

簡化測試。因?yàn)橥竭壿嬍墙挥葿inder做的,View跟著Model同時(shí)變更,所以只需要保證Model的正確性,View就正確。大大減少了對(duì)View同步更新的測試。

缺點(diǎn):

過于簡單的圖形界面不適用,或說牛刀殺雞。

對(duì)于大型的圖形應(yīng)用程序,視圖狀態(tài)較多,ViewModel的構(gòu)建和維護(hù)的成本都會(huì)比較高。

數(shù)據(jù)綁定的聲明是指令式地寫在View的模版當(dāng)中的,這些內(nèi)容是沒辦法去打斷點(diǎn)debug的。

結(jié)語

可以看到,從MVC->MVP->MVVM,就像一個(gè)打怪升級(jí)的過程。后者解決了前者遺留的問題,把前者的缺點(diǎn)優(yōu)化成了優(yōu)點(diǎn)。同樣的Demo功能,代碼從最開始的一堆文件,優(yōu)化成了最后只需要20幾行代碼就完成。MV*模式之間的區(qū)分還是蠻清晰的,希望可以給對(duì)這些模式理解比較模糊的同學(xué)帶來一些參考和思路。

 

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2022-08-09 08:00:55

AWS安全API

2023-07-28 07:14:13

2020-10-09 08:15:11

JsBridge

2022-08-03 08:41:30

客戶端操作并發(fā)請(qǐng)求

2023-05-12 08:19:12

Netty程序框架

2021-06-30 00:20:12

Hangfire.NET平臺(tái)

2023-05-08 08:21:15

JavaNIO編程

2021-03-05 18:04:15

JavaScript循環(huán)代碼

2021-03-09 14:04:01

JavaScriptCookie數(shù)據(jù)

2021-09-27 09:18:30

ListIterato接口方法

2021-01-26 23:46:32

JavaScript數(shù)據(jù)結(jié)構(gòu)前端

2020-12-08 08:09:49

SVG圖標(biāo)Web

2024-01-30 13:47:45

2023-09-06 14:57:46

JavaScript編程語言

2021-02-26 20:01:57

SVG濾鏡元素

2023-07-30 15:18:54

JavaScript屬性

2024-04-19 14:23:52

SwitchJavaScript開發(fā)

2021-05-18 08:30:42

JavaScript 前端JavaScript時(shí)

2021-06-24 09:05:08

JavaScript日期前端

2021-02-02 18:39:05

JavaScript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

www日本高清| 精品国产无码在线观看| 性xxxxfjsxxxxx欧美| 久久伊人国产| 亚洲免费在线观看| 国内精品国语自产拍在线观看| 日韩女优在线观看| av一区二区高清| 欧美一区二区视频网站| 日韩精品欧美在线| 国产情侣一区二区| 亚洲在线国产日韩欧美| 中文字幕日韩精品在线| 色悠悠在线视频| 草民电影神马电影一区二区| 一区二区日韩av| 日本一区视频在线播放| 99热这里只有精品66| 羞羞视频在线观看欧美| 欧美猛男性生活免费| 亚洲精品国产91| 这里视频有精品| 欧亚洲嫩模精品一区三区| 日本人妻伦在线中文字幕| 国产精品影院在线| 成人性视频免费网站| 国产精品普通话| 日韩久久久久久久久| 91精品国产91久久久久久密臀| 欧美精品一区二区三区蜜桃| caoporm在线视频| 精品欧美一区二区三区在线观看| 成人美女视频在线观看| 国产精品成人播放| 日韩伦理在线视频| 欧美黄在线观看| 日韩中文在线中文网在线观看| 青青在线视频免费观看| 最新国产在线观看| 久久这里都是精品| 欧洲亚洲女同hd| 精品视频一区二区在线观看| 首页国产精品| 3atv一区二区三区| 九色91popny| 国产欧美一区二区三区精品酒店| 亚洲一二三四在线| 国产一级大片免费看| 欧美三级黄网| 国产精品亚洲成人| 久久久久久高潮国产精品视| 91视频最新网址| 色综合天天综合网中文字幕| 亚洲香蕉成人av网站在线观看 | 国产美女精品写真福利视频| 一片黄亚洲嫩模| 日本黄色片一级片| 欧美videosex性欧美黑吊| 国产熟女一区二区丰满| 97久久夜色精品国产| 国产亚洲一区二区在线| 亚洲v国产v欧美v久久久久久| 欧美激情久久久久久久久久久| 欧美大片一区二区| 在线播放国产视频| 综合欧美亚洲| 亚洲精品在线观| youjizz.com国产| 国产精品毛片av| 色综合天天性综合| 美女福利视频在线| 粉嫩一区二区三区| 在线看一区二区| 国产精品一区二区小说| 日本午夜免费一区二区| 91麻豆精品国产自产在线观看一区 | 欧美特黄一区| 97久久久久久| 精品无码一区二区三区的天堂| 久久久成人网| 久久久久999| 免费一级肉体全黄毛片| 在线亚洲观看| 国产精品成人aaaaa网站| 亚洲一区二区人妻| 国产欧美日韩综合一区在线播放 | 99视频在线看| 六月天综合网| 国产免费亚洲高清| 午夜精品久久久久久久99| 国产成人久久精品77777最新版本| 国产 高清 精品 在线 a | 日韩中文在线中文网在线观看| 欧美特黄一级片| 亚洲二区精品| 国产精品三级久久久久久电影| 国产有码在线观看| 不卡av免费在线观看| 亚洲成人一区二区三区| 色av手机在线| 欧洲人成人精品| 成人一区二区三区仙踪林| 美女久久久久| 欧美猛交ⅹxxx乱大交视频| 国产又黄又粗又爽| 激情欧美日韩一区二区| 精品久久sese| a黄色片在线观看| 一本大道久久精品懂色aⅴ| 91aaa精品| 国产欧美日韩影院| 欧美美最猛性xxxxxx| 国产精品午夜一区二区| 成人丝袜18视频在线观看| 日韩一本精品| 国产在线观看www| 91精品午夜视频| b站大片免费直播| 在线播放不卡| 成人福利视频在线观看| 人妻91麻豆一区二区三区| 国产精品成人一区二区三区夜夜夜| 久久久亚洲国产精品| 亚洲成人高清| 国产小视频91| 中文字幕69页| 国产精品资源| 91精品久久久久久蜜桃| www免费网站在线观看| 午夜精品一区二区三区电影天堂| 午夜视频在线网站| 国产亚洲一区二区三区不卡| 97色在线播放视频| 亚洲av无码国产精品久久不卡| 欧美激情中文字幕| 国产成人亚洲精品无码h在线| www国产精品| 欧美另类在线观看| 国产绿帽刺激高潮对白| 国产精品色婷婷| 五月婷婷激情久久| 狠狠综合久久av一区二区蜜桃| …久久精品99久久香蕉国产| 亚洲国产精品久久人人爱潘金莲| 中文字幕一区av| 国产视频1区2区3区| 成人一区二区| 国产精品视频一区二区高潮| 毛片免费在线观看| 国产精品久久久久婷婷| 欧美两根一起进3p做受视频| 亚洲va久久久噜噜噜久久| 韩国三级日本三级少妇99| 韩国av在线免费观看| 一个色综合av| 一边摸一边做爽的视频17国产| 欧美日本在线| 动漫精品视频| 精精国产xxxx视频在线播放| 日韩精品福利网站| 无码人妻黑人中文字幕| 国产三级一区二区| 亚洲高清在线免费观看| 久久社区一区| 97超级碰碰| 欧美人与禽猛交乱配| 亚洲第一区第二区| 丁香六月婷婷综合| 国产农村妇女毛片精品久久麻豆| 亚洲免费看av| 欧美 日韩 国产精品免费观看| ts人妖另类在线| 末成年女av片一区二区下载| 亚洲欧美一区二区三区四区| 中文字幕1区2区3区| 亚洲视频香蕉人妖| 蜜臀视频在线观看| 香蕉精品999视频一区二区| 日产国产精品精品a∨| 日韩色性视频| 欧美精品激情视频| 免费在线观看污视频| 欧美在线观看一二区| 久久久久久久久久久久久女过产乱| 国产69精品久久久久毛片| 日韩国产在线一区| 成人在线分类| 性欧美在线看片a免费观看| 免费成人av电影| 欧美日韩高清一区二区不卡| 欧美日韩精品亚洲精品| 91美女片黄在线观看| 国产卡一卡二在线| 朝桐光一区二区| 日韩一区二区福利| 好吊视频一区二区三区| 在线免费不卡视频| 久久中文字幕无码| 国产日韩欧美一区二区三区乱码| 亚洲一二区在线观看| 国产亚洲精品v| 最新不卡av| 亚洲精品国产动漫| 91免费欧美精品| 自由日本语热亚洲人| 久久久国产精彩视频美女艺术照福利| 先锋av资源站| 欧美一三区三区四区免费在线看| 国产午夜在线播放| 亚洲欧洲成人精品av97| 中文字幕一区二区久久人妻网站| 久久成人免费电影| 神马影院一区二区三区| 欧美性猛交xxx高清大费中文| 日韩资源在线观看| 日本中文字幕一区二区有码在线 | www.av黄色| 欧美日韩国产片| 性无码专区无码| 一区二区三区中文免费| 992在线观看| 久久精品综合网| 91传媒理伦片在线观看| 激情小说亚洲一区| 美女一区二区三区视频| 99热在线精品观看| 蜜桃视频一区二区在线观看| 日韩在线第七页| 日韩av电影免费在线| 日本在线中文字幕一区| 成人高清在线观看| 国产一区二区三区国产精品| 国产精品一区av| 亚洲国产尤物| 国产成人精品综合| 日韩激情电影免费看| 欧美精品videosex牲欧美| 黄色免费网站在线观看| 久久精品91久久香蕉加勒比| 超碰国产在线| 中文国产成人精品| 国产福利电影在线| 伊人久久久久久久久久| 国产综合在线观看| 亚洲欧美日韩精品久久| 桃花色综合影院| 欧美三日本三级三级在线播放| 日韩一区二区视频在线| 日韩欧美成人网| 综合激情网五月| 日韩欧美精品在线观看| 五月天婷婷激情| 一本大道久久a久久综合| 黄色片中文字幕| 在线观看av不卡| 这里只有久久精品视频| 欧美三级中文字| 一区二区www| 日韩一区国产二区欧美三区| 99久久久国产精品无码免费| 日韩欧美一级片| 高潮一区二区三区乱码| 亚洲国产精品免费| 色视频在线观看| 亚洲天堂av在线免费| 18视频免费网址在线观看| 色偷偷av亚洲男人的天堂| fc2ppv国产精品久久| 欧美精品在线免费观看| xxxx视频在线| 国产91久久婷婷一区二区| 88xx成人网| 亚洲一区二区三区香蕉| 亚洲精品在线影院| 国产欧亚日韩视频| 黄色污网站在线观看| 日本成人激情视频| 久久人人视频| 不卡日韩av| 希岛爱理av免费一区二区| 日本一区视频在线| 在线看片不卡| 91好吊色国产欧美日韩在线| 日韩激情中文字幕| 亚洲制服在线观看| av男人天堂一区| 亚洲精品成人av久久| 91在线高清观看| 欧美视频亚洲图片| 成人一区二区视频| 精品无码国产污污污免费网站 | 国产精品111| 亚洲色图欧美在线| 四虎成人精品永久免费av| 色8久久精品久久久久久蜜| 国产乱人乱偷精品视频| 日韩成人在线观看| 国产激情在线视频| 日韩免费在线播放| 一区二区三区视频免费视频观看网站 | 国产中文字幕二区| 蜜桃视频一区二区| 国产白嫩美女无套久久| 国产精品美女久久久久av爽李琼| 免费在线观看av网址| 欧美亚日韩国产aⅴ精品中极品| 国产欧美一级片| 亚洲亚裔videos黑人hd| www欧美xxxx| 国产区精品视频| 蜜桃视频欧美| 男的插女的下面视频| 久久69国产一区二区蜜臀| 中文字幕丰满孑伦无码专区| 不卡的av在线| 国产精品 欧美激情| 91高清视频免费看| 男人天堂一区二区| 久久视频这里只有精品| 精品欧美日韩精品| 蜜桃传媒视频麻豆一区| 免费av一区二区三区四区| 91免费国产精品| 黄一区二区三区| 在线观看免费小视频| 欧美日韩美女视频| 精品人妻一区二区三区换脸明星 | 亚洲成人精品久久久| 日本成人在线播放| 国产精品a久久久久久| 亚洲国产合集| 欧美 国产 综合| 成人av在线一区二区三区| 国产这里有精品| 7777精品久久久大香线蕉| 在线观看完整版免费| 国产成人高潮免费观看精品| 特黄特色欧美大片| 日日碰狠狠添天天爽超碰97| 99久久久免费精品国产一区二区| 久久精品99国产精| 日韩欧美区一区二| 91麻豆免费在线视频| 91九色单男在线观看| 亚州av乱码久久精品蜜桃| 国产三级三级看三级| 国产精品素人视频| 亚洲一卡二卡在线| 久久精品中文字幕| 精品视频一二| 超碰10000| 成人午夜视频福利| 日本三级视频在线| 国产视频精品一区二区三区| 九色porny自拍视频在线观看| 久久精品日产第一区二区三区乱码| 999在线观看精品免费不卡网站| 久久精品女同亚洲女同13| 欧美日韩国产区| 久久米奇亚洲| 国产精品视频一| 香蕉精品视频在线观看| 久久综合桃花网| 亚洲国产精品久久久久婷婷884| 日韩中文字幕观看| 日本国产精品视频| 欧美日韩在线播放视频| 欧美日韩精品区别| 亚洲黄色av一区| 天天操天天操天天操| 欧美在线性爱视频 | 999精品嫩草久久久久久99| 在线观看三级网站| 成人av在线资源网站| 在线观看日本网站| 精品国产区一区二区三区在线观看| 国产亚洲久久| 欧美v在线观看| 亚洲国产精品黑人久久久| 国产伦精品一区二区三区四区| 美女福利视频一区| 青青草久久爱| 向日葵污视频在线观看| 一区二区三区在线免费| 午夜av免费观看| 国产在线高清精品| 99热精品在线| 国产白丝一区二区三区| 精品日韩在线观看| 一呦二呦三呦精品国产| 免费观看国产视频在线| 91尤物视频在线观看| 一级黄色大毛片| 午夜精品视频在线| 久久国产精品亚洲人一区二区三区 | 一个色的综合| 不卡av在线免费观看| 国产精品久久久久久久久久久久久久久久 | а√在线中文在线新版| 亚洲欧美成人一区|