Skip to content

Instantly share code, notes, and snippets.

@slmanju
Created January 25, 2018 06:25
Show Gist options
  • Select an option

  • Save slmanju/0cc78aab47c410e3f43de38bb662546b to your computer and use it in GitHub Desktop.

Select an option

Save slmanju/0cc78aab47c410e3f43de38bb662546b to your computer and use it in GitHub Desktop.
Observer design pattern with Java
import java.util.ArrayList;
import java.util.List;
public class ConcreteSubject implements Subject {
private List<Observer> observers = new ArrayList<>();
private String message;
public ConcreteSubject() {
}
@Override
public void update(String message) {
this.message = message;
notifyObservers();
}
@Override
public void registerObserver(Observer observer) {
observers.add(observer);
}
@Override
public void notifyObservers() {
observers.forEach(observer -> observer.update(message));
}
}
public interface Observer {
void update(String message);
}
public class ObserverA implements Observer {
@Override
public void update(String message) {
System.out.println("+++++ ObserverA : " + message + " ++++++");
}
}
public class ObserverB implements Observer {
@Override
public void update(String message) {
System.out.println("---- ObserverB : " + message + " ----");
}
}
public class ObserverDemo {
public static void main(String[] args) {
Subject subject = new ConcreteSubject();
Observer observerA = new ObserverA();
Observer observerB = new ObserverB();
subject.registerObserver(observerA);
subject.registerObserver(observerB);
subject.update("hello world");
System.out.println("\n+----------------------------------+\n");
subject.update("hello java");
}
}
public interface Subject {
void update(String message);
void registerObserver(Observer observer);
void notifyObservers();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment