Basic Observer Example
This program demonstrates Observer pattern.
Problem Statement
Write a Java program where Subject notifies Observers.
Source Code
| 1 | import java.util.*; |
| 2 | interface Observer { void update(String msg); } |
| 3 | class Subject { |
| 4 | List<Observer> obs=new ArrayList<>(); |
| 5 | void addObserver(Observer o){ obs.add(o); } |
| 6 | void notifyObservers(String msg){ |
| 7 | for(Observer o:obs) o.update(msg); |
| 8 | } |
| 9 | } |
| 10 | class ConcreteObserver implements Observer { |
| 11 | String name; |
| 12 | ConcreteObserver(String n){ name=n; } |
| 13 | public void update(String msg){ System.out.println(name+" received: "+msg); } |
| 14 | } |
| 15 | public class ObserverBasic { |
| 16 | public static void main(String[] args) { |
| 17 | System.out.println("Eduinq Observer Basic"); |
| 18 | Subject s=new Subject(); |
| 19 | s.addObserver(new ConcreteObserver("Obs1")); |
| 20 | s.addObserver(new ConcreteObserver("Obs2")); |
| 21 | s.notifyObservers("Hello Observers"); |
| 22 | } |
| 23 | } |
Program Output
Eduinq Observer Basic Obs1 received: Hello Observers Obs2 received: Hello Observers
Explanation
Subject maintains list of observers. - Observers notified when state changes. - This decouples subject from observers, promoting scalability. Conclusion: Shows how to implement Observer pattern.