国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MVC 、MVP 、MVVM的講解

2019-11-09 19:05:14
字體:
來源:轉載
供稿:網友

在介紹MVVM(Model View viewModel)之前,先簡單的介紹一下MVC(Model View Controller)和MVP(Model View PResenter)。如果這方便比較了解,可以忽略此部分,直接閱讀MVVM相關的內容。

一、MVC簡介

對于MVC我們是比較熟悉,對于原生的Android項目來說,layout.xml里面的xml文件就對應于MVC的view層,里面都是一些view的布局代碼,而各種java bean,還有一些類似repository類就對應于model層,至于controller層,就是各種activity。 這里寫圖片描述 調用關系:

用戶對于V操作后,V捕捉到這個操作后,把邏輯的處理權交給CC接收后執行響應的后臺業務邏輯,這些業務邏輯可能會影響M當M中數據改變后通過觀察者模式通知view當M中數據改變后通過觀察者模式通知view

注意點:

V和M通過觀察者模式操作,而同步操作是V主動向M請求數據(凡是在M中設置接收的V都會收到數據的變更請求)邏輯C的測試困難:V的操作是由自己完成的,對于C的改變無法實時顯示V依賴特定的M,復用性比較差

二、MVP的簡介

MVP作為MVC的演化,解決了MVC不少的缺點,對于Android來說,MVP的model層相對于MVC是一樣的,而activity和fragment不再是controller層,而是純粹的view層,所有關于用戶事件的轉發全部交由presenter層處理。 這里寫圖片描述 調用關系:

用戶對于V操作后,V捕捉到這個操作后,把邏輯的處理權交給PP接收后執行響應的后臺業務邏輯,這些業務邏輯可能會影響M當M中數據改變后通過觀察者模式通知P(注意:不是V)P收到觀察者模式的數據變化后,通過V提供的接口,更新界面

注意點:

V不再負責同步邏輯交給P完成(業務邏輯和同步邏輯)P和V解耦:通過drgger2(編譯時注解)實現V和P的解耦 -邏輯的操作基本由P完成造成P的代碼臃腫

三、MVVM詳解

它和MVP的區別貌似不大,只不過是presenter層換成了viewmodel層,還有一點就是view層和viewmodel層是相互綁定的關系,這意味著當你更新viewmodel層的數據的時候,view層會相應的變動ui。

這里寫圖片描述 調用關系:

前面的調用關系與MVP模式相同在VM中有一個Bindler:負責數據同步之間的操縱: 只需要在View的模版語法當中,指令式地聲明View上的顯示的內容是和Model的哪一塊數據綁定 當ViewModel對進行Model更新的時候,Binder會自動把數據更新到View上

注意點:

V和M實現了自動化V和M之間通過觀察者模式操縱,而同步操作是由V主動向M請求數據的(然后更新對自己界面) 特別說明:對于這一點的好處就是當M中的數據改變后,凡是在M中設置接收的V都會收到數據的變更請求,保持了同一個M不同的V顯示的效果過于簡單的圖形不適合
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 虹口区| 且末县| 大埔县| 定州市| 墨竹工卡县| 墨竹工卡县| 棋牌| 镇巴县| 昆明市| 彭水| 巢湖市| 建宁县| 宾川县| 左云县| 公主岭市| 大宁县| 探索| 广安市| 青川县| 满洲里市| 尚义县| 南岸区| 五大连池市| 满城县| 滦平县| 贵德县| 馆陶县| 长子县| 斗六市| 澎湖县| 湖南省| 华安县| 安溪县| 镇雄县| 龙门县| 江川县| 萨嘎县| 东丽区| 棋牌| 元阳县| 临清市|