VIPER - Kasimashi/Systemes-embarques GitHub Wiki

Architecture VIPER (View - Interactor - Presenter - Entity - Router)

L’architecture VIPER est un modèle de conception très utilisé dans les applications mobiles iOS et parfois Android.
Elle découpe l’application en cinq composants pour une séparation des responsabilités très stricte et une testabilité maximale.

1. View (Vue)

La View affiche l’interface utilisateur et transmet les actions au Presenter.

Rôle :

  • Afficher les données
  • Déclencher les actions utilisateur
  • Ne contient pas de logique métier

Exemple :

  • Écran d’une application mobile
  • Boutons, listes, formulaires

2. Interactor

L’Interactor contient la logique métier et les règles de gestion.

Rôle :

  • Traiter les données selon la logique métier
  • Interagir avec les Entities ou services externes
  • Ne s’occupe pas de l’affichage

Exemple :

  • Calcul du prix total d’une commande
  • Filtrage des utilisateurs selon un critère

3. Presenter

Le Presenter est l’intermédiaire entre View et Interactor.

Rôle :

  • Recevoir les actions de la View
  • Demander le traitement au Interactor
  • Formater les données pour la View

Exemple :

  • Méthode presentUsers(users) qui prépare la liste à afficher

4. Entity (Entité)

Les Entities représentent les objets métier et les données de base.

Rôle :

  • Contenir uniquement les données
  • Ne contient pas de logique complexe

Exemple :

  • Classe User { id, nom, email }
  • Classe Product { id, nom, prix }

5. Router (Wireframe)

Le Router gère la navigation entre les écrans.

Rôle :

  • Définir la logique de navigation
  • Créer et connecter les modules VIPER
  • Ne contient pas de logique métier

Exemple :

  • Passage d’un écran “Liste des utilisateurs” à un écran “Détail utilisateur”

Fonctionnement global

  1. L’utilisateur interagit avec la View
  2. La View envoie l’action au Presenter
  3. Le Presenter demande le traitement au Interactor
  4. L’Interactor renvoie les résultats au Presenter
  5. Le Presenter formate les données et met à jour la View
  6. Pour naviguer, le Presenter utilise le Router

Avantages

  • Séparation très stricte des responsabilités
  • Testabilité excellente
  • Code modulaire et maintenable
  • Navigation centralisée via le Router

Exemple concret

Dans une application mobile :

  • Entity : User (données)
  • Interactor : récupère la liste des utilisateurs depuis un service
  • Presenter : prépare la liste pour affichage
  • View : affiche la liste et les interactions utilisateur
  • Router : navigue vers l’écran de détail d’un utilisateur

En résumé :
VIPER découpe une application en cinq couches pour garantir une architecture claire, testable et modulable, particulièrement adaptée aux applications mobiles complexes.