Ответ
MVVM (Model-View-ViewModel) разделяет логику на три слоя: View (UI), ViewModel (бизнес-логика) и Model (данные). ViewModel не знает о View, что упрощает тестирование. Используется с LiveData/Flow.
MVP (Model-View-Presenter) также разделяет логику, но Presenter знает о View через интерфейс. Это создает сильную связь, но проще для понимания.
MVC (Model-View-Controller) объединяет логику в Controller, что часто приводит к "раздутым" классам. View и Model могут общаться напрямую.
Пример MVVM:
class MyViewModel : ViewModel() {
private val _data = MutableLiveData<String>()
val data: LiveData<String> = _data
fun loadData() { _data.value = "Hello MVVM" }
}
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
viewModel.data.observe(this) { textView.text = it }
}
}