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.

Quick Links to Explore