日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

浅谈开发中的MVVM模式及与MVP和MVC的区别

發布時間:2023/12/19 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈开发中的MVVM模式及与MVP和MVC的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

我記得前段時間分享了一篇文章《?淺談Andorid開發中的MVP模式》(點擊可跳轉),反響不錯,為了進一步介紹MVVM模式,還提前分享了實現Android中MVVM模式的一個關鍵技術的文章《Android 數據綁定框架DataBinding,堪稱解決界面邏輯的黑科技》(點擊可跳轉) 。如果沒有看過這兩篇文章的,建議先看看這兩篇文章,再看下面的分享。

?

什么是MVVM?

?

MVVM是Model-View-ViewModel的簡寫。微軟的WPF帶來了新的技術體驗,如Silverlight、音頻、視頻、3D、動畫……,這導致了軟件UI層更加細節化、可定制化。同時,在技術層面,WPF也帶來了 諸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由來便是MVP(Model-View-Presenter)模式與WPF結合的應用方式時發展演變過來的一種新型架構框架。它立足于原有MVP框架并且把WPF的新特性糅合進去,以應對客戶日益復雜的需求變化。

?

MVC和MVP,MVVM之間的關系

?

MVC和MVP的關系

我們都知道MVP是從經典的模式MVC演變而來,它們的基本思想有相通的地方:Controller/Presenter負責邏輯的處理,Model提供數 據,View負責顯示。作為一種新的模式,MVP與MVC有著一個重大的區別:在MVP中View并不直接使用Model,它們之間的通信是通過 Presenter (MVC中的Controller)來進行的,所有的交互都發生在Presenter內部,而在MVC中View會直接從Model中讀取數據而不是通過 Controller。

?

MVVM和MVP的關系

而 MVVM 模式將 Presenter 改名為 ViewModel,基本上與 MVP 模式完全一致。 唯一的區別是,它采用雙向綁定(data-binding):View的變動,自動反映在 ViewModel,反之亦然。這樣開發者就不用處理接收事件和View更新的工作,框架已經幫你做好了。

?

視圖化解釋關系

?

MVC架構:

View:對應于布局文件

Model:業務邏輯和實體模型

Controllor:對應于Activity

  • View可以與Model直接交互。

  • Controller是基于行為的,并且可以被多個View共享。

  • 可以負責決定顯示哪個View。
    ?

MVP架構:

View: 對應于Activity,負責View的繪制以及與用戶交互
Model: 依然是業務邏輯和實體模型
Presenter: 負責完成View于Model間的交互

  • View不直接與Model交互,而是通過與Presenter交互來與Model間接交互。

  • Presenter與View的交互是通過接口來進行的。

  • 通常View與Presenter是一對一的,但復雜的View可能綁定多個Presenter來處理邏輯。

    ?

MVVM架構:

Model:代表你的基本業務邏輯

View:顯示內容

ViewModel:將前面兩者聯系在一起的對象

一個ViewModel接口提供了兩個東西:動作和數據。動作改變Model的下層(click listener,監聽文字改變的listener等等),而數據則是Model的內容。

?

去年的I/O大會上谷歌介紹了一個非常好用的新框架DataBinding,該框架可以讓你將view和一個對象的對field綁定。當field更新的時候,framework將收到通知,同時view也會自動更新。其語法和使用方式和 JSP 中的 EL 表達式非常類似。

?

在MVVM中,ViewModel在改變內容之后通知binding framework內容發生了改變。然后framework自動更新和那些內容綁定的view。這兩個組件只是通過ViewModel松耦合在一起。這種設計模式之所以好用和方便,除了明顯智能化了的View之外,還方便了測試。因為ViewModel不在依賴于View了,你可以在沒有View的情況下也能測試ViewModel。在合適的依賴注入的幫助下,測試就會變得非常簡單。

?

MVVM的優點

?

1. 低耦合。視圖(View)可以獨立于Model變化和修改,一個ViewModel可以綁定到不同的"View"上,當View變化的時候Model可以不變,當Model變化的時候View也可以不變。

?

2. 可重用性。你可以把一些視圖邏輯放在一個ViewModel里面,讓很多view重用這段視圖邏輯。

?

3. 獨立開發。開發人員可以專注于業務邏輯和數據的開發(ViewModel),設計人員可以專注于頁面設計。

?

4. 可測試。界面素來是比較難于測試的,而現在測試可以針對ViewModel來寫。

?

具體怎么好用,怎么使用,建議參考我寫的《Android 數據綁定框架DataBinding,堪稱解決界面邏輯的黑科技》這篇文章。

?

參考文章:

《?淺談Andorid開發中的MVP模式》(點擊可跳轉)

Android 數據綁定框架DataBinding,堪稱解決界面邏輯的黑科技》(點擊可跳轉)

轉載于:https://my.oschina.net/JiangTun/blog/910901

總結

以上是生活随笔為你收集整理的浅谈开发中的MVVM模式及与MVP和MVC的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。