TD -
Domain-Driven-Design
Ce TD reprend le code du TD précédent et a pour objectif de construire la
couche application et la couche UI.
Consignes
Toutes les modifications apportées au code doivent être compilées.
Le service dans la couche application
Créer un package application au même niveau que le
package domain. Dans ce package :
- Créer une classe PanierService afin de mettre en
oeuvre un service de votre application pour gérer les commandes.
- Vous distinguerez dans cette classe les parties query
soit les read dans le repository, des parties comand soit
les write dans le repository.
Pour se faire vous pouvez créer des Worker qui vont récupérer
les commandes:
- Construire une classe abstraite Command qui propose
une méthode abstraite execute.
- Construire la classe concrète CommandAddProduct qui
implément la méthode execute en ajoutant un produit au panier.
- Construire la classe Worker ( avec un
thread) qui réalisera l'éxecution des commandes (via
command.excute), cette classe devra avoir une
méthode de thread (run) dont le but est d'aller récupérer
une commande dans la liste et de l'exécuter.
- Construire la classe BagOfCommands qui permet
d'ajouter des commandes (pushCommand()) et de retirer des commandes (getCommand()).
La couche interface utilisateur
- Construire une classe qui sera le modèle de votre UI.
- Cette classe devra contenir tous les éléments de votre interface
graphique ou de votre interface alpha/numérique si vous n'avez pas
le temps de faire une interface graphique.
- Vous pouvez si besoin conserver dans cette classe des
informations qui vous permet de communiquer avec la couche
application : référence d'un panier, contexte de l'utilisateur ...