Sobes.tech
Junior — Middle

Dlaczego lepiej jest używać warstwy Interactor podczas pracy z danymi, zamiast bezpośrednio odwoływać się do repozytorium?

sobes.tech AI

Odpowiedź od AI

Użycie warstwy Interactor (lub Use Case) pomiędzy interfejsem użytkownika a repozytorium pozwala oddzielić logikę biznesową od szczegółów przechowywania danych. To zwiększa modułowość i testowalność aplikacji, ponieważ Interactor odpowiada za konkretne scenariusze użycia, a repozytorium tylko za dostęp do danych.

Zalety:

  • Enkapsulacja logiki biznesowej: Interactor łączy operacje na danych, nie ujawniając szczegółów repozytorium.
  • Uproszczenie testowania: Logikę biznesową można testować osobno, zastępując repozytorium mockami lub stubami.
  • Elastyczność: Przy zmianie źródła danych (np. z lokalnej bazy danych na sieć) zmienia się tylko repozytorium, Interactor pozostaje bez zmian.

Przykład:

class UserInteractor(private val userRepository: UserRepository) {
    fun getUserProfile(userId: String): UserProfile {
        val user = userRepository.getUserById(userId)
        // Dodatkowa logika, np. filtrowanie lub agregacja
        return UserProfile(user.name, user.age)
    }
}