Какие знаешь особенности MVC

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

Ответ

MVC (Model-View-Controller) в Android имеет свои особенности:

  1. Activity/Fragment как Controller и View – часто совмещают логику Controller и View, что нарушает чистоту паттерна.
  2. Модель (Model) – отвечает за данные и бизнес-логику, но часто её выносят в отдельные классы (репозитории, UseCase).
  3. Связность – View знает о Model, что усложняет тестирование и поддержку.

Пример:

// Model  
data class User(val name: String)  

// View (Activity)  
class MainActivity : AppCompatActivity() {  
    override fun onCreate(savedInstanceState: Bundle?) {  
        super.onCreate(savedInstanceState)  
        val user = User("Alex") // Model  
        findViewById<TextView>(R.id.textView).text = user.name // View + Controller  
    }  
}  

Проблемы:

  • Сложно тестировать из-за смешивания логики.
  • Нет чёткого разделения ответственностей.

Часто заменяется на MVP/MVVM для большей гибкости.