ExempleCh04_10a_DPObserverSimpleRetourTélécharger Exemple du DP Observer Cas : Synchrone minimal ExempleCh04_10a.java // Exemple du DP Observer // Cas : Synchrone minimal import java.util.*; public class ExempleCh04_10a { public static void main(String[] args) { App a = new App(); Utilisateur u1 = new Utilisateur("U1",a.getObservable()); Utilisateur u2 = new Utilisateur("U2",a.getObservable()); Utilisateur u3 = new Utilisateur("U3",a.getObservable()); a.traitement(); } } // ------------------------------------ class App { private int etat1; private ObservableApp obs; public App() { etat1 = 1; obs = new ObservableApp(); } public void setEtat1(int v) { etat1 = v; obs.notifier(new Integer(etat1)); } public Observable getObservable(){return obs;} public void traitement() { for(int i=0;i<10;i++) { setEtat1(i); try{Thread.sleep(1000);}catch(Exception ex){}; System.out.println("------------"); } } } // ------------------------------------ class ObservableApp extends Observable { public void notifier(Object arg) { setChanged(); notifyObservers(arg); } } // ------------------------------------ class ObserverApp implements Observer { Utilisateur util; public ObserverApp(Utilisateur util) { this.util = util; } public void update(Observable o,Object arg) { Integer v = (Integer)arg; util.traitement(v.intValue()); // APPEL AU TRAITEMENT } } // ------------------------------------ class Utilisateur { private ObserverApp observer; private String ident; public Utilisateur(String ident,Observable observable) { this.ident = ident; observer = new ObserverApp(this); // this observable.addObserver(observer); } // traitement de utilisateur appelé public void traitement(int v) { System.out.println(ident+" "+v); if (ident.equals("U3")) try{Thread.sleep(4000);}catch(Exception ex){}; } } compil.bat mkdir bin del /f /s /q bin\*.class javac -d bin *.java pause run.bat cd bin java ExempleCh04_10a pause