Observer with State Change
This program demonstrates Observer with state change.
Problem Statement
Write a Java program where Subject changes state and notifies Observers.
Source Code
| 1 | import java.util.*; |
| 2 | interface Observer { void update(int state); } |
| 3 | class Subject { |
| 4 | List<Observer> obs=new ArrayList<>(); |
| 5 | int state; |
| 6 | void addObserver(Observer o){ obs.add(o); } |
| 7 | void setState(int s){ state=s; notifyObservers(); } |
| 8 | void notifyObservers(){ for(Observer o:obs) o.update(state); } |
| 9 | } |
| 10 | class ConcreteObserver implements Observer { |
| 11 | String name; |
| 12 | ConcreteObserver(String n){ name=n; } |
| 13 | public void update(int state){ System.out.println(name+" sees state: "+state); } |
| 14 | } |
| 15 | public class ObserverState { |
| 16 | public static void main(String[] args) { |
| 17 | System.out.println("Eduinq Observer State"); |
| 18 | Subject s=new Subject(); |
| 19 | s.addObserver(new ConcreteObserver("Obs1")); |
| 20 | s.addObserver(new ConcreteObserver("Obs2")); |
| 21 | s.setState(10); |
| 22 | } |
| 23 | } |
Program Output
Eduinq Observer State Obs1 sees state: 10 Obs2 sees state: 10
Explanation
Subject maintains state. - Observers notified when state changes. - This demonstrates reactive programming model. Conclusion: Shows Observer with state change.