- Published on
Android 的 MVI 與 MVVM
- Authors
- Name
- Alan Hu
對於 Android 來說,可將 MVI 視為基於 MVVM,對 View 跟 ViewModel 的一種改良。
MVVM
- M: Model (Repository)
- V: View (Activity, Fragment, View)
- VM: ViewModel
特點:
- 強調 View 跟 ViewModel 雙向綁定
MVI
- M: Model (UiState)
data class NewsUiState( val isSignedIn: Boolean = false, val isPremium: Boolean = false, val newsItems: List<NewsItemUiState> = listOf(), val userMessages: List<Message> = listOf() )
- V: View (Activity, Fragment, View)
- I: Intent
// 此 Intent 表示 user 的操作意圖,非 Android 的 Intent binding.button.setOnClickListener { viewModel.xxx() }
特點:
- 強調單向資料流 UDF
- 強調 Immutable State