Ответ
Presentation слой должен быть "глупым" и отвечать только за отображение данных и обработку пользовательских действий. Прямое взаимодействие с данными нарушает принцип единственной ответственности и усложняет тестирование.
Вместо этого следует использовать паттерн MVVM или Clean Architecture, где:
- Presentation слой получает данные через ViewModel/Presenter
- ViewModel/Presenter получает данные из Domain/Data слоев
Пример с MVVM:
// Плохо (нарушение слоев)
class MyActivity : AppCompatActivity() {
fun loadData() {
val data = Database.getData() // прямое обращение к БД
showData(data)
}
}
// Хорошо
class MyViewModel : ViewModel() {
private val repo = DataRepository()
fun loadData() = repo.getData() // данные приходят через репозиторий
}
class MyActivity : AppCompatActivity() {
private val viewModel: MyViewModel by viewModels()
fun loadData() {
viewModel.loadData().observe(this) { data ->
showData(data)
}
}
}