Sobes.tech
Junior — Middle

É necessário conectar diretamente a camada de serviço à interface do utilizador?

sobes.tech IA

Resposta da IA

A ligação direta entre a camada de serviço e a interface de utilizador geralmente não é recomendada. É melhor usar uma camada intermédia — por exemplo, ViewModel ou Presenter, que é responsável por preparar os dados e a lógica de interação.

Razões:

  • Separação de responsabilidades: UI é responsável por exibir, o serviço pela lógica de negócio.
  • Testabilidade: é mais fácil testar a lógica de negócio separadamente da UI.
  • Manutenção: alterações no serviço não afetam diretamente a UI e vice-versa.

No Android, muitas vezes é utilizado o padrão arquitetónico MVVM, onde o ViewModel liga a UI e os serviços, fornecendo dados numa forma conveniente para exibição.

Exemplo:

class UserViewModel(private val userService: UserService) : ViewModel() {
    val userData = MutableLiveData<User>()

    fun loadUser(userId: String) {
        viewModelScope.launch {
            val user = userService.getUser(userId)
            userData.postValue(user)
        }
    }
}

// Em uma Activity ou Fragment, subscreve-se a userData e atualiza a UI