ViewModel сама создаёт клиент сети
Во ViewModel заказов написано так:
class OrdersViewModel : ViewModel() {
private val api = Retrofit.Builder()
.baseUrl(BASE_URL)
.build()
.create(OrdersApi::class.java)
fun load() { /* ... */ }
}
Чем это плохо?
- Единственная проблема — лишний трафик из-за повторных соединений, на тестируемость класса это никак не влияет
- Такой код не скомпилируется: зависимости внутри ViewModel обязаны быть помечены аннотацией внедрения
- Проблем нет: так меньше кода, не нужен контейнер зависимостей, а клиент всё равно создаётся один на процесс
- Класс жёстко связан с реализацией сети: фейк в тесте не подставить, а каждый экран поднимает свой клиент
