Avancé – Le système comportemental

Si Generic System est avant tout un système de représentation, il devient aussi grâce au paramétrage statique un système comportemental. Nous allons utiliser un paramétrage statique pour gérer un stock de téléphones.

Création de l’interface de gestion

Cette interface étend  Snapshot et offre la possibilité d’ajouter ou de supprimer un téléphone, ainsi que de récupérer la liste de tous les téléphones :

Bien que l’interface SimpleCRUD n’étende pas  Generic, elle possède un comportement augmenté. Par exemple,  this peut être casté en Generic :

Déclarons maintenant notre modèle grâce au paramétrage statique. Il est pour l’instant très simple, et seule une classe Phone, représentant un téléphone, est nécessaire. Elle est annotée   @SystemGeneric pour être prise en charge par Generic System, et implémente l’interface de gestion SimpleCRUD :

Création du stock de téléphones

Nous pouvons désormais créer notre stock de téléphones. On crée un nouvel Engine en lui spécifiant la classe de notre modèle, puis on récupère la référence au modèle grâce à la méthode find() :

Ajoutons quelques téléphones à notre stock, et sauvegardons nos changements :

Nous pouvons aussi supprimer un téléphone :

Finalement, nous avons changé d’avis et décidé que ce téléphone pouvait être récupéré ! Il suffit de faire appel à la méthode clear() du cache pour annuler nos modifications depuis le dernier flush() :

Et voilà ! En quelques lignes seulement, nous avons mis en place une interface CRUD de gestion d’un stock de téléphones grâce au paramétrage statique.

En résumé

  • Tout un système peut être paramétré avec des annotations comme @SystemGeneric, @Components : c’est le paramétrage statique.
  • À la création de l' Engine, il faut lui spécifier toutes les classes annotées. La méthode find de l’ Engine permet ensuite de les retrouver.
  • Generic System est un système de représentation de l’information. Avec le paramétrage statique, c’est en plus un système comportemental.

Voyons dans le prochain billet la mutabilité.