Sommaire

Exemple en Java

Nous présentons l’exemple de la figure 25.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 = etatCommande.etatSuivant(); 
  } 
 
  public List<Produit> getProduits() 
  { 
    return produits; 
  } 
 
  public void affiche() 
  { 
    System.out.println("Contenu de la commande"); 
    for (Produit produit: produits)  ...