Mise à jour de novembre 2018
Après avoir travaillé et tenu un blog sur MVC et MVP dans Android pendant plusieurs années (voir le corps de la réponse ci-dessous), j'ai décidé de rassembler mes connaissances et ma compréhension sous une forme plus complète et plus facile à digérer.
J'ai donc publié un cours vidéo complet sur l'architecture des applications Android. Donc, si vous êtes intéressé par la maîtrise des modèles architecturaux les plus avancés dans le développement Android, consultez ce cours complet ici .
Cette réponse a été mise à jour afin de rester pertinente en novembre 2016.
On dirait que vous cherchez les modèles architecturaux plutôt que modèles de conception .
Modèles de conception visent à décrire une "astuce" générale que le programmeur pourrait mettre en œuvre pour traiter un ensemble particulier de tâches logicielles récurrentes. Par exemple : Dans la POO, lorsqu'il est nécessaire qu'un objet notifie un ensemble d'autres objets à propos de certains événements, l' modèle de conception d'observateur peut être employé.
Étant donné que les applications Android (et la plupart des AOSP) sont écrites en Java, qui est orienté objet, je pense que vous aurez du mal à trouver un seul modèle de conception OOP qui ne soit PAS utilisé sur Android.
Modèles architecturaux En revanche, ils ne s'attaquent pas à des tâches logicielles particulières - ils visent à fournir modèles pour l'organisation des logiciels en fonction des cas d'utilisation du composant logiciel en question.
Cela semble un peu compliqué, mais j'espère qu'un exemple permettra de clarifier les choses : si une application est utilisée pour récupérer des données d'un serveur distant et les présenter à l'utilisateur de manière structurée, alors MVC pourrait être un bon candidat à prendre en considération. Notez que je n'ai rien dit sur les tâches logicielles et le déroulement du programme de l'application - je l'ai juste décrite du point de vue de l'utilisateur, et un candidat pour un modèle architectural est apparu.
Puisque vous avez mentionné MVC dans votre question, je suppose que les modèles architecturaux sont ce que vous recherchez.
Historiquement, il n'y avait pas de directives officielles de la part de Google concernant les architectures des applications, ce qui (entre autres raisons) a conduit à un désordre total dans le code source des applications Android. En fait, aujourd'hui encore, la plupart des applications que je vois ne suivent pas les meilleures pratiques de la POO et ne présentent pas une organisation logique claire du code.
Mais aujourd'hui, la situation est différente - Google a récemment publié la Bibliothèque de liaison de données qui est entièrement intégré à Android Studio, et a même déployé un ensemble d'outils d'aide à la décision. les plans d'architecture pour les applications Android .
Il y a deux ans, il était très difficile de trouver des informations sur MVC ou MVP sur Android. Aujourd'hui, MVC, MVP et MVVM sont devenus des "mots à la mode" dans la communauté Android, et nous sommes entourés d'innombrables experts qui essaient constamment de nous convaincre que MVx est meilleur que MVy. À mon avis, discuter de la question de savoir si MVx est meilleur que MVy est totalement inutile car les termes eux-mêmes sont très ambigus - il suffit de regarder les réponses aux questions suivantes cette question et vous vous rendrez compte que différentes personnes peuvent associer ces abréviations à des constructions complètement différentes.
Étant donné que la recherche d'un meilleur modèle architectural pour Android a été officiellement lancée, je pense que nous sommes sur le point de voir plusieurs autres idées apparaître. À ce stade, il est vraiment impossible de prédire quel(s) modèle(s) deviendra(ont) la norme dans l'industrie à l'avenir - nous devons attendre et voir (je suppose que c'est une question d'un an ou deux).
Cependant, il y a une prédiction que je peux faire avec un haut degré de confiance : L'utilisation de la bibliothèque Data Binding ne deviendra pas un standard industriel. Je suis sûr de dire cela parce que la bibliothèque Data Binding (dans son implémentation actuelle) fournit des gains de productivité à court terme et une sorte de ligne directrice architecturale, mais elle rendra le code non maintenable à long terme. Une fois que les effets à long terme de cette bibliothèque feront surface - elle sera abandonnée.
Bien que nous disposions aujourd'hui d'une sorte de directives et d'outils officiels, je ne pense pas, personnellement, que ces directives et outils soient les meilleures options disponibles (et ils ne sont certainement pas les seuls). Dans mes applications, j'utilise ma propre mise en œuvre d'une architecture MVC. Elle est simple, propre, lisible et testable, et ne nécessite aucune bibliothèque supplémentaire.
Cette MVC n'est pas seulement différente des autres d'un point de vue esthétique - elle est fondée sur une théorie selon laquelle Les activités dans Android ne sont pas des éléments de l'interface utilisateur ce qui a des répercussions considérables sur l'organisation du code.
Donc, si vous cherchez un bon modèle architectural pour les applications Android qui suit SOLIDE Vous pouvez en trouver une description dans mon article sur les principes de l'UE. Modèles architecturaux MVC et MVP dans Android .
2 votes
Étant donné que la plate-forme Android intègre un noyau Linux, il s'agit d'une suite logicielle beaucoup trop vaste pour répondre à cette question autrement que par "tous les modèles cités jusqu'à présent, et probablement quelques nouveaux si vous regardez attentivement".
5 votes
@Pete, Ok, vous avez probablement raison, mais en même temps, je ne vais pas aussi loin que le noyau, je suis intéressé par la surface de l'application, par exemple dans iOS.
UIViewController
mis en œuvre en utilisant MVC (UIViewController
est un contrôleur et sa RacineUIView
est vue),UIApplication
utilise la délégation en ayant le délégué d'application comme délégué et ainsi de suite...4 votes
Je pense que vous devriez vraiment apprendre Android à partir de la base et ne pas essayer de "porter" vos connaissances d'iOS à Android. Il y a beaucoup de bons livres sur le marché. Apress en fait un tas. Si vous comprenez le cycle de vie des applications et des services dans Android, vous devriez être capable de concevoir des applications correctement.
2 votes
La magie : raywenderlich.com/109843/common-design-patterns-for-Android
0 votes
Cela pourrait aider : stackoverflow.com/a/49694378
0 votes
MVC sur Android : upday.github.io/blog/model-view-controller