2015-12-19 2 views
12

Je prévois mettre en œuvre le modèle de conception architecturale MVVM pour mon application Android. J'ai lu en ligne que cela m'aidera à réaliser une séparation efficace des problèmes et à rédiger facilement des cas de test pour le modèle de données, l'interface utilisateur, etc. Besoin d'un aperçu/conseil pour cela.Comment implémenter efficacement le modèle de conception MVVM pour mon application Android, ce qui facilitera également l'écriture des cas de test?

Répondre

24

Eh bien, pour apprendre comment utiliser efficacement MVVM, commencer par Android MVVM Design Pattern Examples

vous ici trouver ce poste:

Je suis le développeur de Android-Binding. Comme @Brentley a dit, c'est un tout nouveau projet, mais j'espère obtenir plus de buzz et d'expérience si qu'il peut être amélioré. Retour à votre question, je l'ai écrit quelques introduction simple/tutoriels sur MVVM avec android contraignant:

adoptants potentiels Veuillez également s'inscrire sur le project discussion group.

Lire le sujet entier. Vous remarquerez que MVVM est cadre relativement nouveau et il est fortement recommandé de travailler avec elle en collaboration avec Google bibliothèque p Data Binding et la bibliothèque injection de dépendance comme Roboguice ou Dagger2 ...

... mais le mieux serait celui-ci:

Approaching Android with MVVM. Building an MVVM architectured application using the Data Binding Library,

où un auteur explique à l'aide MVVM avec bibliothèque de liaison de données par exemple - je veux dire par sa propre application créée. Il conclut:

Il est encore trop tôt pour savoir si cette approche est la bonne façon de développer une application, mais cette expérience m'a donné une chance d'examiner l'une des possibilités pour de futurs projets. C'est quelque chose que je veux vraiment jouer avec plus.

Model-View-ViewModel est intéressant car dans l'architecture Android traditionnelle, le contrôleur pousserait les données vers la vue. Vous trouverez la vue dans votre activité, puis définissez le contenu sur celle-ci. Avec MVVM, votre ViewModel modifie du contenu et notifie le cadre de données de liaison sur le contenu modifié. Le framework met alors automatiquement à jour toutes les vues liées à ce contenu.

Les deux composants ne sont que faiblement couplés par cette interface de données et de commandes.

L'approche suivante de l'utilisation de MVVM est vraiment testable.De MVVM on Android: What You Need to Know

Parce qu'un ViewModel ne dépend pas de la plus View, vous pouvez tester un ViewModel sans View même existant. Avec une injection de dépendance appropriée pour les autres dépendances, il est très facile à tester. Par exemple, au lieu de lier une machine virtuelle à une vue réelle, vous pouvez créer une machine virtuelle dans un scénario de test, lui donner des données, puis appeler des actions, pour vous assurer que les données sont correctement transformées. (...) Tout cela peut être fait sans avoir à interagir avec une vue réelle.

Lire aussi: MVVM ON ANDROID USING THE DATA BINDING LIBRARY

Je espère que ça aide

+1

A propos du blog de stablekernel, je l'ai lu il y a quelques jours, mais je dois noter que ce n'est pas complètement MVVM conforme. Il apporte des préoccupations de vue dans le ViewModel (OnFocusListener, Type de vue). Comme tout de Google, il ne semble pas très bien pensé ou mûri. Les mises en page Xml n'étant toujours pas très flexibles comme XAML par exemple, il sera toujours très difficile d'implémenter MVVM dans les applications. – Tseng

+0

Les développeurs disent toujours que MVP est plus mature et permet aux développeurs de tester facilement par rapport à MVVM! –

+0

Je n'apprécie pas cette architecture issue de Knockout js et je continue à flux/réagir. C'est simplement trop imprévisible. – frostymarvelous