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)
}
}