Pattern_UI - Kasimashi/Systemes-embarques GitHub Wiki

Les architectures logicielles pour applications modernes

Il existe plusieurs patterns d’architecture pour organiser le code d’une application, en séparant les responsabilités et en facilitant la maintenance, l’évolution et les tests. Les plus connus sont MVC, MVVM, MVP, MVI et VIPER. Chacun a ses particularités et domaines d’utilisation.


1. MVC (Model - View - Controller)

Concept : Sépare les données (Model), l’interface (View) et la logique de contrôle (Controller).

Usage :

  • Très populaire dans le développement web.
  • Frameworks majeurs : Ruby on Rails, Django, Laravel, Spring MVC.
  • Convient bien aux applications avec des flux utilisateurs simples ou modérés.

2. MVVM (Model - View - ViewModel)

Concept : Introduit le ViewModel pour gérer la logique de présentation et utiliser le data binding entre la View et le ViewModel.

Usage :

  • Très utilisé pour les interfaces riches et réactives.
  • Frameworks majeurs : WPF, Xamarin, .NET MAUI, Angular, Vue.js, Jetpack Compose, Qt.
  • Idéal pour les applications mobiles ou desktop avec mise à jour automatique de l’interface.

3. MVP (Model - View - Presenter)

Concept : La View est passive, le Presenter contient la logique de présentation et interagit avec le Model.

Usage :

  • Fréquent dans les applications mobiles Android classiques.
  • Frameworks majeurs : Android (avant Jetpack Compose), GWT.
  • Convient aux interfaces où l’on veut séparer strictement la présentation et la logique métier.

4. MVI (Model - View - Intent)

Concept : Architecture réactive, centrée sur un flux unidirectionnel et un Model immuable. La View déclenche des Intentions, qui produisent un nouvel état du Model.

Usage :

  • Idéal pour les applications modernes réactives et prévisibles.
  • Frameworks majeurs : Redux, Jetpack Compose (Android), React avec Redux, Flutter avec Riverpod/BLoC.
  • Convient aux interfaces complexes nécessitant un état unique et prévisible.

5. VIPER (View - Interactor - Presenter - Entity - Router)

Concept : Découpe l’application en cinq couches très strictes pour une séparation maximale des responsabilités et une navigation centralisée.

Usage :

  • Très utilisé pour le développement mobile iOS, parfois Android.
  • Frameworks majeurs : applications natives iOS (Swift/Objective-C).
  • Idéal pour des applications mobiles complexes et modulaires, avec de nombreuses interactions et flux.

Comparaison rapide

Architecture Interface riche Flux unidirectionnel Testabilité Usage typique
MVC Moyen Non Moyenne Web, Rails, Django
MVVM Oui Partiel (via binding) Bonne Desktop, mobile, Angular, Vue, Qt
MVP Oui Non Bonne Mobile Android, GWT
MVI Oui Oui Très bonne React, Redux, Flutter, Compose
VIPER Oui Oui (via Router) Excellente iOS mobile

Conclusion

Ces architectures permettent de structurer le code en séparant les responsabilités entre données, interface et logique.

  • MVC et MVP sont classiques et simples à comprendre.
  • MVVM et MVI sont adaptés aux interfaces réactives.
  • VIPER vise une séparation stricte pour des applications mobiles complexes.

Le choix dépend du type d’application, du framework utilisé et du niveau de complexité souhaité.