Observer Pattern
Observer Pattern = Publishers + Subscribers
The Observer Pattern defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are
notified and updated automatically
Example
The Observer Pattern defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are
notified and updated automatically
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | import java.util.Observable; public class NewsPaperAgent extends Observable{ private String paper; public void update(){ if(hasChanged()){ notifyObservers(this); clearChanged(); } } public void setPaper(String paper){ this.paper = paper; setChanged(); update(); } public String getPaper(){ return paper; } } ========== import java.util.Observable; import java.util.Observer; public class Businessman implements Observer{ Observable agent; public Businessman(Observable agent){ this.agent = agent; this.agent.addObserver(this); } @Override public void update(Observable observable, Object arg) { if(observable instanceof NewsPaperAgent){ NewsPaperAgent agent = (NewsPaperAgent) observable; System.out.println("Businessman copy: "+agent.getPaper()); } } } ========== import java.util.Observable; import java.util.Observer; public class Farmer implements Observer{ Observable observable; public Farmer(Observable observable){ this.observable = observable; this.observable.addObserver(this); } @Override public void update(Observable observable, Object arg) { if(observable instanceof NewsPaperAgent){ NewsPaperAgent agent = (NewsPaperAgent) observable; System.out.println("Farmer copy: "+agent.getPaper()); } } } ========== import java.util.Observable; import java.util.Observer; public class Student implements Observer{ Observable observable; public Student(Observable observable){ this.observable = observable; this.observable.addObserver(this); } @Override public void update(Observable observable, Object arg) { if(observable instanceof NewsPaperAgent){ NewsPaperAgent agent = (NewsPaperAgent) observable; System.out.println("student copy: "+agent.getPaper()); } } } ========== public class ObserverFlight { public static void main(String[] bag){ NewsPaperAgent agent = new NewsPaperAgent(); Student student = new Student(agent); Businessman businessman = new Businessman(agent); Farmer farmer = new Farmer(agent); agent.setPaper("Times oF India"); agent.setPaper("Hindustan Times"); } } |