Created
January 25, 2018 06:25
-
-
Save slmanju/0cc78aab47c410e3f43de38bb662546b to your computer and use it in GitHub Desktop.
Observer design pattern with Java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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)); | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public interface Observer { | |
| void update(String message); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class ObserverA implements Observer { | |
| @Override | |
| public void update(String message) { | |
| System.out.println("+++++ ObserverA : " + message + " ++++++"); | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class ObserverB implements Observer { | |
| @Override | |
| public void update(String message) { | |
| System.out.println("---- ObserverB : " + message + " ----"); | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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"); | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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