В чем разница между архитектурными паттернами

«В чем разница между архитектурными паттернами» — вопрос из категории Архитектура, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 }
    }
}