Sobes.tech
Junior — Middle

Por que é preferível usar a camada Interactor ao trabalhar com dados, em vez de aceder diretamente ao repositório?

sobes.tech IA

Resposta da IA

O uso da camada Interactor (ou Use Case) entre a interface de utilizador e o repositório permite separar a lógica de negócio dos detalhes de armazenamento de dados. Isto melhora a modularidade e a testabilidade da aplicação, uma vez que o Interactor é responsável por cenários de uso específicos, e o repositório apenas pelo acesso aos dados.

Vantagens:

  • Encapsulamento da lógica de negócio: O Interactor combina operações com dados sem revelar os detalhes do repositório.
  • Simplificação dos testes: Pode-se testar a lógica de negócio separadamente, substituindo o repositório por mocks ou stubs.
  • Flexibilidade: Ao alterar a fonte de dados (por exemplo, de uma base de dados local para a rede), apenas o repositório muda, o Interactor permanece inalterado.

Exemplo:

class UserInteractor(private val userRepository: UserRepository) {
    fun getUserProfile(userId: String): UserProfile {
        val user = userRepository.getUserById(userId)
        // Lógica adicional, por exemplo, filtragem ou agregação
        return UserProfile(user.name, user.age)
    }
}