Skip to content

Instantly share code, notes, and snippets.

@marc-x-andre
Created November 9, 2017 14:24
Show Gist options
  • Save marc-x-andre/9b5a75154cdec304303ffba4670af911 to your computer and use it in GitHub Desktop.
Save marc-x-andre/9b5a75154cdec304303ffba4670af911 to your computer and use it in GitHub Desktop.
Java Observer (Design Pattern) [French/Français]
Java Observer (Design Pattern) [French/Français]
public class Main {
public static void main(String... agrs) {
Serveur serveur = new Serveur();
Technicien tec1 = new Technicien("Gabriel","514 252 9298");
Technicien tec2 = new Technicien("Vincent","438 555 7275");
Technicien tec3 = new Technicien("Christian","123 456 7890");
serveur.register(tec1);serveur.register(tec2);serveur.register(tec3);
serveur.changeServerStatus("Warning #492");
}
}
public abstract class Observer {
/** Observer style
* Push me = if data is pass
* Pull me = if no data is pass
*/
abstract void update(String message);
}
public class Serveur extends Sujet {
private List<Observer> observers;
private String status;
public Serveur() {
this.observers = new ArrayList<Observer>();
}
public void changeServerStatus(String status) {
this.status = status;
notifyObserver();
}
protected void register(Observer observer) {
observers.add(observer);
}
protected void notifyObserver() {
for(Observer observer : observers)
observer.update("Server "+status);
}
}
public abstract class Sujet {
abstract void register(Observer observer);
abstract void notifyObserver();
}
public class Technicien extends Observer {
private String name;
private String telNumber;
public Technicien(String name, String telNumber) {
this.name = name;
this.telNumber = telNumber;
}
private void sendServerUpdate(String message) {
System.out.print("Message \'"+message+"\' send to "+name+ ":"+telNumber+".\n\n");
}
protected void update(String message) {
sendServerUpdate(message);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment