當前位置:首頁 » 安卓系統 » mvpmvcandroid

mvpmvcandroid

發布時間: 2023-11-01 14:43:05

1. Android MVP與MVC的區別和理解

MVP架構:
View不直接與Model交互,而是通過與Presenter交互來與Model間接交互。
Presenter與View的交互是通過介面來進行的。
通常View與Presenter是一對一的,但復雜的View可能綁定多個Presenter來處理邏輯。
MVC架構:
View可以與Model直接交互。
Controller是基於行為的,並且可以被多個View共享。
可以負責決定顯示哪個View。

2. Android 中 MVC、MVP 和 MVVM 對比

MVC、MVP和MVVM是常見的三種架構設計模式,當前MVP和MVVM的使用相對比較廣泛,當然MVC也並沒有過時之說。

MVC (Model-View-Controller, 模型-視圖-控制器),標準的MVC是這個樣子的:

簡述:

缺點:

MVP (Model-View-Presenter) 是MVC的演化版本,幾個主要部分如下:

簡述:

解釋:

優點:

缺點:

MVVM 是 Model-View-ViewModel 的簡寫。和 MVP 模式相比,MVVM 模式用 ViewModel 替換了 Presenter ,其他層基本上與 MVP 模式一致,ViewModel 可以理解成 是 View 的數據模型和 Presenter 的合體。MVVM 就是將其中的 View 的狀態和行為抽象化,讓我們將視圖 UI 和業務邏輯分開。

簡述:

缺點:

參考:

3. Android真的推薦用MVI模式MVI和MVVM有什麼區別

android自己卷自己,自己造一個MVI架構模式嗎?

MVI架構模式是國內android開發者最近一兩年造出來的嗎?

看了很多MVI的資料,發現都提到cycle.js框架。android的mvi架構就是啟發於cycle.js框架。

我們再看看Cycle.js框架是什麼時候開始的,又是什麼時候開始使用MVI模式的。

Cycle.js框架 第一個預發版本

https://github.com/cyclejs/cyclejs/releases?page=6

再結合官方文檔來看,Cycle.js框架就是為了MVI架構模式而生的。

雖然不知道,Cycle.js框架是不是首個MVI模式框架。

但是從很多資料可以推測,MVI架構模式就是Cycle.js框架推廣開來的。

而且早在2014年就已經在前端開發中用得飛起了。

想想2014年,咱們在幹嘛?android在用什麼架構模式。

正所謂,天下武功出少林啊。

我們android的很多技術,在前端早就用「爛了」。

我們知道MVP和MVVM的爹都是MVC。MVI的爹也是MVC。


MVC的Controller是命令是編程組件,不能直接實現響應式編程思想。


響應式編程範式(Reactive programming):

安卓官方的compose框架、微信小程序、Flutter、React、鴻蒙UI的開發框架,都是使用響應式開發框架。

這里就不拓展開來講了,上面提到的任何一個開發框架,你只要會一個基本就能理解響應式編程範式。

如果一個都不會也沒關系,現在不理解響應式編程也沒關系,等你學會MVI就理解了,這種只有實際使用過才能深刻理解。


學不會也沒關系,不要焦慮(尤其那些工作不久的小夥伴,學不會屬於正常現象~)

MVI,咱第一遍學不會,就等2年,再學一遍~

2年後也沒學會,那就再等2年~ 一定要有耐心~

如果還是學不會,那也沒關系,因為MVI早晚也會過時~ 等過時了就不用學了~

哈哈哈~ 別笑,正經Android可不會開玩笑的。

就像rxjava,當年有多少人死活學不會,android開發現在誰還學Rxjava?哈哈哈~

用一張圖來總結這次升級的核心思想:


新版架構指南在舊版的基礎上,做了如下調整和建議:

1. 將LiveData組件改成了StateFlow

對協程的使用更友好。並且更能體現面向數據流開發的思想。

實際上,依然使用LiveData也沒毛病。


2. ViewModel傳遞給View的數據限制為View的UIState

ViewModel從Model層獲取數據後,轉換為UIState數據,通過StateFlow流向View層。

UIState的數據面向界面組件而定義的,是能直接控制View組件如何顯示的數據。

所以我們也可以稱UIState為界面的狀態或者View的狀態。

如下:


3. 單數據流還是多數據流的選擇

官方指南並沒有強制我們使用單流。

同一個界面應該使用單個StateFlow還是多個StateFlow,需要我們自己判斷。

我們應該根據UIStates數據們之間關聯程度來決定多流還是單流。

單流優缺點都十分明顯:

優點: 數據集中管控,會提高代碼的可讀性和修改的便利性。

缺點: 當數據非常多且復雜時,會影響效率。因為我們沒有diff功能,View層不能只更新有變化的數據,只會根據UIState刷新當前界面。

https://developer.android.com/jetpack/guide/ui-layer#additional-considerations

我們再看下官方新版架構圖:

當然不僅僅MVVM可以改造成響應式開發範式,MVP也是可以的。

不信你看 這篇blog

https://www.raywenderlich.com/817602-mvi-architecture-for-android-tutorial-getting-started

1. 理解MVC架構模式的思想【MVC是其他架構模式之爹,他的思想是MVP、MVVM、MVI的基礎,學會它是關鍵步驟~】。

3. 學習kotlin的StateFlow組件,的使用:Sequence->Flow->StateFlow。

4. 學習ViewModel組件的使用(雖然不用ViewModel也能實現MVI架構,但是ViewModel還是值得學習)。

5. 理解DRY(Don't Repeat Yourself)原則。

6. 理解MVVM(因為官方的MVI模式是基於MVVM的基礎改造的~)。

7. 學習官方架構指南。

8. 實戰。

在這里就分享一份由大佬親自收錄整理的 學習PDF+架構視頻+面試文檔+源碼筆記 高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料

這些都是我現在閑暇時還會反復翻閱的精品資料。裡面對近幾年的大廠面試高頻知識點都有詳細的講解。相信可以有效地幫助大家掌握知識、理解原理,幫助大家在未來取得一份不錯的答卷。

當然,你也可以拿去查漏補缺,提升自身的競爭力。

真心希望可以幫助到大家,Android路漫漫,共勉!

如果你有需要的話,只需 私信我【進階】即可獲取

4. android mvp是什麼意思

MVP模式是MVC模式在Android上的一種變體,要介紹MVP就得先介紹MVC。在MVC模式中,Activity應該是屬於View這一層。而實質上,它既承擔了View,同時也包含一些Controller的東西在裡面。這對於開發與維護來說不太友好,耦合度大高了。把Activity的View和Controller抽離出來就變成了View和Presenter,這就是MVP模式。
在Android項目中,Activity和Fragment占據了大部分的開發工作。如果有一種設計模式(或者說代碼結構)專門是為優化Activity和Fragment的代碼而產生的,你說這種模式重要不?這就是MVP設計模式。
按照MVC的分層,Activity和Fragment(後面只說Activity)應該屬於View層,用於展示UI界面,以及接收用戶的輸入,此外還要承擔一些生命周期的工作。Activity是在Android開發中充當非常重要的角色,特別是TA的生命周期的功能,所以開發的時候我們經常把一些業務邏輯直接寫在Activity裡面,這非常直觀方便,代價就是Activity會越來越臃腫,超過1000行代碼是常有的事,而且如果是一些可以通用的業務邏輯(比如用戶登錄),寫在具體的Activity里就意味著這個邏輯不能復用了。如果有進行代碼重構經驗的人,看到1000+行的類肯定會有所顧慮。因此,Activity不僅承擔了View的角色,還承擔了一部分的Controller角色,這樣一來V和C就耦合在一起了,雖然這樣寫方便,但是如果業務調整的話,要維護起來就難了,而且在一個臃腫的Activity類查找業務邏輯的代碼也會非常蛋疼,所以看起來有必要在Activity中,把View和Controller抽離開來,而這就是MVP模式的工作了。

5. Android MVP 開發模式有哪些優缺點

MVP概念:

MVP(Model-View-Presenter) 是總所周知MVC模式的一個演變,主要目的都是劃分模塊職責,降低模塊耦合,易測試,提高代碼復用。

  • 層級責任

  1. Model:負責數據的檢索,持久化等操作。

  2. View: 負責UI的繪制和用戶的交互。

  3. Presenter: 作為Model和View的中間協調部分,負責兩者之間的業務邏輯處理。

  • MVC模式的區別

  1. MVC模式允許View層和Model層直接通訊。

  2. 當某個View的功能很復雜的時候,View和Model的耦合度可能會很高。

  3. MVP模式就沒有這個問題,View會抽象出來一系列操作UI的介面。

  4. Presenter拿到的都是其他兩個層級的介面來做業務邏輯的處理,這樣不僅可以使View和Model之間的耦合度降低,還可以更易得進行單元測試。

  • MVP的優缺點

  1. 優點:降低耦合,層級職責更明顯,易於單元測試。

  2. 缺點:造成類數量爆炸,代碼復雜度和學習成本高,在某些場景下presenter的復用會產生介面冗餘。

熱點內容
c語言開發者 發布:2024-11-30 07:30:34 瀏覽:387
西門子觸摸屏字體無法編譯 發布:2024-11-30 07:26:13 瀏覽:301
雲伺服器低 發布:2024-11-30 07:24:47 瀏覽:300
這首歌密碼是多少 發布:2024-11-30 07:19:35 瀏覽:523
c語言數組最大長度 發布:2024-11-30 07:16:51 瀏覽:367
在線編程刷題 發布:2024-11-30 07:15:17 瀏覽:72
監控管理伺服器有什麼要求 發布:2024-11-30 07:09:46 瀏覽:172
linux配置apache2 發布:2024-11-30 07:00:30 瀏覽:729
c語言大於小於 發布:2024-11-30 06:54:43 瀏覽:499
如何知道老婆微信和密碼 發布:2024-11-30 06:46:16 瀏覽:848