Ответ
Нарушается Принцип инверсии зависимостей (DIP). Модель не должна зависеть от деталей (например, ViewModel), а только от абстракций. Это усложняет тестирование и переиспользование модели.
Пример нарушения:
class UserModel {
fun updateUser(viewModel: UserViewModel) { // Нарушение DIP
viewModel.updateUI()
}
}
Исправленный вариант:
interface UserUpdateListener {
fun onUserUpdated()
}
class UserModel(private val listener: UserUpdateListener) {
fun updateUser() {
listener.onUserUpdated() // Модель зависит от абстракции
}
}
class UserViewModel : UserUpdateListener {
override fun onUserUpdated() {
updateUI()
}
}