国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一篇文章了解架構(gòu)模式:MVC/MVP/MVVM

bingchen / 3441人閱讀

摘要:架構(gòu)模式的文章很多,好理解的沒有幾個(gè)。沒有明確的目的理解架構(gòu)模式的真正意義是什么虛擬和組件化在中的位置題目開的太大,一定有很多疏忽錯(cuò)誤的地方,也懇請(qǐng)大家指出。因此,模式出現(xiàn)了。然后通過雙向數(shù)據(jù)綁定使中的狀態(tài)數(shù)據(jù)與中的顯示狀態(tài)保持一致。

架構(gòu)模式的文章很多,好理解的沒有幾個(gè)。大部分文章出現(xiàn)的主要問題有:

沒有設(shè)定好作用域:前端MVC是改造過的MVC,和后臺(tái)MVC有明顯的區(qū)別,不能一概而論

沒有實(shí)際的例子:實(shí)際的例子對(duì)應(yīng)日常的工作,沒有就很難產(chǎn)生共鳴,從而造成看一次忘一次的困擾。

沒有明確的目的:理解架構(gòu)模式的真正意義是什么?虛擬DOM和組件化在MV*中的位置?

題目開的太大,一定有很多疏忽錯(cuò)誤的地方,也懇請(qǐng)大家指出。

1. MV* 1.1 后端MVC與前端MVC

從實(shí)現(xiàn)上來說,主要可以分為后端MVC和前端MVC兩種。這兩種MVC的不同點(diǎn)如下:

可以看到,前端的MVC其實(shí)是為了解決前端復(fù)雜JS模塊化的問題,從后端MVC的V分出來的MVC,與后端MVC并沒有直接的關(guān)系。前端的MVC中,M占的比例很低,只指代數(shù)據(jù)。而后端V的比例很低,只有模版的部分。

1.2 MVC/MVP/MVVM

可以清晰的看出,這三個(gè)架構(gòu)的區(qū)別在“M與V聯(lián)系”的部分。下面我們針對(duì)這一部分做一個(gè)對(duì)比:

Controller: 負(fù)責(zé)監(jiān)聽View的用戶事件,得到數(shù)據(jù)后Controller做一些處理,然后渲染View。

當(dāng)然,在一些后端MVC架構(gòu)里,Model也可以直接渲染View模版,但這只是不同變種的實(shí)現(xiàn),這里不多做討論。

但是隨時(shí)邏輯的復(fù)雜,這樣的處理遇到了很難調(diào)試的問題。由于View一定要運(yùn)行在UI環(huán)境下,而且Model或者Controller和View強(qiáng)耦合,沒有辦法多帶帶驗(yàn)證應(yīng)用邏輯的正確性。當(dāng)出了問題之后,因?yàn)楦鱾€(gè)模塊是耦合在一起的,也不能快速判斷究竟是哪個(gè)模塊出現(xiàn)的問題。因此,MVP模式出現(xiàn)了。

Presenter: 比起Controller,Presenter會(huì)調(diào)用View層提供的接口去渲染Model。這樣做有幾點(diǎn)好處:

面向接口編程

更好的解耦

方便做單元測試

現(xiàn)在P和V解耦了,P可以自己做單元測試了。軟件結(jié)構(gòu)劃分的更加清楚,邏輯清晰并方便調(diào)試。但是這一切都來自于一個(gè)前提:View層要提供接口。當(dāng)一個(gè)UI復(fù)雜起來的時(shí)候,View層需要提供的接口是很多的,這本身也是一種開發(fā)調(diào)試的成本。所以,MVVM應(yīng)運(yùn)而生。

ViewModel: 比起MVP中View需要自己提供API,MVVM在VM中構(gòu)建一組狀態(tài)數(shù)據(jù)(state data),作為View狀態(tài)的抽象。然后通過雙向數(shù)據(jù)綁定(data binding)使VM中的狀態(tài)數(shù)據(jù)(state data)與View中的顯示狀態(tài)(screen state)保持一致。這樣,VM中的展示邏輯只需要修改對(duì)應(yīng)的狀態(tài)數(shù)據(jù),就可以控制View的狀態(tài),從而避免在View上開發(fā)大量的接口。

VM有沒有什么缺點(diǎn)?有的,當(dāng)UI比較簡單的時(shí)候,使用VM就會(huì)使業(yè)務(wù)邏輯變得復(fù)雜,有過分設(shè)計(jì)的嫌疑。所以VM只適合復(fù)雜UI交互的項(xiàng)目。

2. 舉個(gè)栗子

栗子

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/95499.html

相關(guān)文章

  • 文章了解架構(gòu)模式MVC/MVP/MVVM

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

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

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

    raoyi 評(píng)論0 收藏0
  • 我的Android重構(gòu)之旅:架構(gòu)

    摘要:是的架構(gòu)的實(shí)現(xiàn)。是在年提出的一種前端架構(gòu),主要用來處理復(fù)雜的邏輯的一致性問題當(dāng)時(shí)是為了解決頁面的消息通知問題。 去年10月底來到了新公司,剛開始接手 Android 項(xiàng)目時(shí),發(fā)現(xiàn)該項(xiàng)目真的是一團(tuán)遭,項(xiàng)目開發(fā)上沒有任何架構(gòu)可言,開發(fā)人員連簡單的 MVC、MVP 都不了解,Activity 及其臃腫,業(yè)務(wù)邊界也不明確,因此我決定重新分析一下當(dāng)前主流的幾種開發(fā)架構(gòu),選出適合當(dāng)前項(xiàng)目的架構(gòu)形式...

    mylxsw 評(píng)論0 收藏0
  • Android架構(gòu)

    摘要:目前它還未正式發(fā)布。理解系列一是谷歌在發(fā)布一套幫助開發(fā)者解決架構(gòu)設(shè)計(jì)的方案。但最近還是推出了一份關(guān)于應(yīng)用架構(gòu)的實(shí)踐指南,并給出了相當(dāng)詳盡的步驟和一些指導(dǎo)建議。 MVP+Retrofit+Rxjava在項(xiàng)目中實(shí)戰(zhàn)解析 文章目標(biāo) MVP在android中的原理解析 MVP+Retrofit+Rxjava在項(xiàng)目中實(shí)戰(zhàn)解析 架構(gòu)經(jīng)驗(yàn)分享 MVP簡單介紹 先說說MVC分層: View:對(duì)應(yīng)于布局...

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

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

0條評(píng)論

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