Exemples vus en cours

// Observateur.java

package lundi209h;

public interface Observateur{ 

  public abstract void miseAJour(Observé o);
}


// ObservateurDeBouton.java

package lundi209h;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class ObservateurDeBouton implements ActionListener{

  public void actionPerformed(ActionEvent ae){
      System.out.println(" !!! clic !! " + ae);
    }
}


// ObservateurDeStock.java

package lundi209h;

public class ObservateurDeStock implements Observateur{
	
	public void miseAJour(Observé o){
	    System.out.println(" le stock " + o + " s'est enrichi !!!");
	   }
	   
}


// Observé.java

package lundi209h;

import java.util.Enumeration;
import java.util.Vector;

public abstract class Observé{
  private Vector table;
  
  public Observé(){
      table = new Vector();
    }
  
  public void ajouter(Observateur obs){
      table.addElement(obs);
    }
    
  public void notifier(){
      for(Enumeration e = table.elements();e.hasMoreElements();){
          Observateur obs = (Observateur) e.nextElement();
          obs.miseAJour(this);
        }
    }
}


// Stock.java

package lundi209h;

public class Stock extends Observé{
  private String nom;
  
  public Stock(String nom){this.nom = nom;}
    
  public void mettreEnStock(Object o){
      // chgt d'état
      notifier();
    }
    
    public String toString(){
        return nom;
    }
}


// TestBouton.java

package lundi209h;

import java.applet.Applet;
import java.awt.*;

public class TestBouton extends Applet{
   private Button b = new Button("clic");
   
	public void init(){
	  b.addActionListener(new ObservateurDeBouton());
	  b.addActionListener(new ObservateurDeBouton());
	  b.addActionListener(new ObservateurDeBouton());
	  add(b);
	}
}