Exemple en Java
Nous présentons l’exemple de la figure 4-9.2 en Java. La classe Commande est décrite à la suite. Les méthodes ajouteProduit, retireProduit et efface dépendent de l’état. Par conséquent leur implantation consiste à appeler la méthode correspondante de l’instance référencée par etatCommande.
Le constructeur de la classe initialise l’attribut etatCommande avec une instance de la classe CommandeEnCours. La méthode etatSuivant passe à l’état suivant en associant une nouvelle instance à l’attribut etatCommande.
import java.util.*;
public class Commande
{
protected List<Produit> produits = new ArrayList<Produit>();
protected EtatCommande etatCommande;
public Commande()
{
etatCommande = new CommandeEnCours(this);
}
public void ajouteProduit(Produit produit)
{
etatCommande.ajouteProduit(produit);
}
public void retireProduit(Produit produit)
{
etatCommande.retireProduit(produit);
}
public void efface()
{
etatCommande.efface();
}
public void etatSuivant()
{
etatCommande...