Architecture MVVM pour Android
Dans le domaine du génie logiciel, un modèle de conception est un problème courant dans la conception d'un logiciel. Un modèle de conception n'est pas une conception finale qui peut être transformée directement en code résolu.
L'un des principaux problèmes du développement de logiciels est le couplage étroit du code, c'est-à-dire que même un petit changement dans une partie du code entraîne des modifications ou des bogues dans une autre partie du code. Le code n'est pas adapté aux tests unitaires et n'est pas réutilisable.
Introduction
Actuellement, de nombreuses approches architecturales sont disponibles comme MVP, FLUX, MVI, MVVM qui résolvent les problèmes ci-dessus. Nous pouvons utiliser n'importe quelle approche pour maintenir notre code correctement afin que tout fonctionne bien, en bref, une vie de développeur heureuse. Cet article traite du modèle de conception MVVM dans Android et de la façon dont nous pouvons résoudre les problèmes existants avec le modèle de conception MVVM.
Les principaux composants du modèle de conception MVVM sont :
- View - informe le ViewModel des actions de l'utilisateur
- ViewModel - Expose des flux de données pertinents pour la vue
- DataModel - Résume la source de données. Le ViewModel travaille avec le DataModel pour obtenir et enregistrer les données.
Brève explication du modèle de conception MVVM
Google a introduit les composants de l'architecture Android, qui incluent ViewModel plutôt que Presenter, ce qui prouve que même Google soutient MVVM.
Modèle de vue
Les ViewModels sont de simples classes qui interagissent avec la couche logique/modèle et exposent des états/données sans savoir par qui ou comment ces données seront consommées. Seule View(Activity) fait référence à ViewModel et non l'inverse, ce qui résout notre problème de couplage étroit. Une vue unique peut faire référence à plusieurs modèles de vues.
Dans Android, l'activité représente une vue dans le modèle de conception MVVM. La vue est responsable de l'affichage visuel des applications et des données saisies par les utilisateurs. Cette partie ne doit en aucun cas traiter les données. Sa fonction consiste uniquement à détecter les données saisies, comme le toucher ou le glissement, et à les visualiser.
Le modèle architectural ModelView-ViewModel a été introduit dans Android avec la naissance de la bibliothèque DataBinding. Vous pouvez activer le data-binding à partir du fichier app.gradle.
Ajoutez ces lignes dans le fichier application.Gradle à l'intérieur de la balise android{}. Ensuite, mettez votre code de mise en page XML sous la balise. Cela va générer une classe de liaison, et vous pouvez accéder à cette classe à partir de l'activité. Vous pouvez voir que nous pouvons accéder directement à la méthode getText() depuis XML.
Après l'inactivité de setContentView, vous définissez une référence au modèle de vue.
Modèle de données
Le modèle de données contient les données de l'application. Il ne peut pas communiquer directement avec la vue. En général, il est recommandé d'exposer les données au ViewModel par l'intermédiaire d'Observables.
Avantages de l'utilisation du modèle de conception MVVM
- La testabilité de votre code est améliorée.
Dans l'extrait de code ci-dessous, nous testons la méthode getText() dans le ViewModel. Vous pouvez simuler vos données et vérifier le résultat attendu.
- Votre code est découplé.
- La structure du paquet est encore plus facile à naviguer.
- Le projet est encore plus facile à entretenir.
- Votre équipe peut ajouter de nouvelles fonctionnalités encore plus rapidement.
Conclusion
MVVM combine les avantages de la séparation des préoccupations fournis par MVP tout en tirant parti des avantages des liaisons de données. Le résultat est un modèle dans lequel le modèle conduit autant d'opérations que possible, minimisant la logique dans la vue.