Skip to content

Instantly share code, notes, and snippets.

@rohitvvv
Created December 25, 2016 14:58
Show Gist options
  • Save rohitvvv/3aa0ffa9cb60e7010a8d294dd145e91c to your computer and use it in GitHub Desktop.
Save rohitvvv/3aa0ffa9cb60e7010a8d294dd145e91c to your computer and use it in GitHub Desktop.
Observer Design Pattern
package Observer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* Observer design pattern
*/
interface Observer{
void update(Observable obj);
}
/**
* Class than defines behaviour for a Observable
*/
class Observable {
boolean isChanged=false;
List<Observer> observerList = new ArrayList<Observer>();
public void setChanged() {
isChanged = Boolean.TRUE;
}
void addObserver(Observer observerObj){
observerList.add(observerObj);
}
void notifyObservers(Object arg){
Iterator<Observer> itr = observerList.iterator();
while(isChanged&&itr.hasNext()){
itr.next().update(this);
}
}
}
class EventObserver extends Observable{
void setChange(){
setChanged();
notifyObservers("Time Up");
}
}
public class App {
public static void main( String[] args ){
EventObserver observervable = new EventObserver();
//Register 3 observers
observervable.addObserver(obj -> {
System.out.println("Notified Observer 1");
});
observervable.addObserver(obj ->{
System.out.println("Notified Observer 2");
});
observervable.addObserver(obj ->{
System.out.println("Notified Observer 3");
});
observervable.setChange();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment