Sobes.tech
Junior — Middle

Quelle est la différence dans les méthodes de communication entre View et ses modèles : ViewModel et View, ainsi que Presenter et View ?

sobes.tech IA

Réponse de l'IA

Dans l’architecture Android, la relation entre View et ses modèles (ViewModel et Presenter) diffère par la manière d’interagir et par la responsabilité :

  • View et ViewModel (MVVM)

    • ViewModel ne contient pas de références à View, ce qui assure une faible couplage.
    • ViewModel fournit des données via des objets observables (par exemple, LiveData), auxquels View s’abonne.
    • Les changements dans les données se reflètent automatiquement dans View via des observateurs.
    • ViewModel ne connaît pas la mise en œuvre concrète de View, ce qui facilite les tests.
  • Presenter et View (MVP)

    • Presenter a une référence à View via une interface.
    • View appelle les méthodes de Presenter, et Presenter met à jour View directement via l’interface.
    • La relation est plus rigide, et Presenter gère la logique d’affichage.

Exemple :

MVVM :

viewModel.data.observe(this) { data ->
    view.update(data)
}

MVP :

interface View {
    fun showData(data: String)
}

class Presenter(val view: View) {
    fun loadData() {
        val data = "..."
        view.showData(data)
    }
}

Ainsi, MVVM est orienté vers la mise à jour réactive via des observateurs, tandis que MVP se concentre sur la gestion directe de View via l’interface Presenter.