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);
}
}