Ответ
MVC (Model-View-Controller) – классический паттерн, где View отображает данные, Controller обрабатывает действия, Model хранит данные. В Android Activity/Fragment часто берут на себя роли и View, и Controller, что приводит к раздуванию кода.
MVP (Model-View-Presenter) – улучшенная версия MVC. View (Activity/Fragment) отвечает только за UI, Presenter – за логику. Пример:
class MainPresenter(private val view: MainView) {
fun loadData() {
// Business logic
view.showData(data)
}
}
MVVM (Model-View-ViewModel) – использует Data Binding и LiveData/Flow. ViewModel хранит состояние и логику, View подписывается на изменения. Пример:
class MainViewModel : ViewModel() {
private val _data = MutableLiveData<String>()
val data: LiveData<String> = _data
fun loadData() {
_data.value = "New data"
}
}
MVI (Model-View-Intent) – однопоточная архитектура с неизменяемым состоянием. Пользовательские действия (Intents) преобразуются в состояния (State). Популярно с Kotlin Flow/StateFlow.
Clean Architecture – разделение на слои (Presentation, Domain, Data) с соблюдением Dependency Rule. Часто комбинируется с MVVM или MVI.