Learn about the Observer design pattern and state management in Java. The Observer pattern allows objects to notify other objects about changes in their state, which is valuable for building loosely coupled systems.
The Observer design pattern defines a dependency among cooperating objects so that when one object's state changes, all dependent objects are notified automatically. This pattern is commonly used in event handling systems, social media notifications, and many other applications where loose coupling between components is important.
The Observer pattern consists of four distinct elements:
Here's how you might implement a simple Observer pattern in Java:
// Subject interface public interface Subject { void attach(Observer observer); void detach(Observer observer); void notifyObservers(); } // Observer interface public interface Observer { void update(); } // Concrete Subject public class ConcreteSubject implements Subject { private List<Observer> observers = new ArrayList<>(); private String state; public void setState(String state) { this.state = state; notifyObservers(); } public String getState() { return state; } @Override public void attach(Observer observer) { observers.add(observer); } @Override public void detach(Observer observer) { observers.remove(observer); } @Override public void notifyObservers() { for (Observer observer : observers) { observer.update(); } } } // Concrete Observer public class ConcreteObserver implements Observer { private ConcreteSubject subject; private String observerState; public ConcreteObserver(ConcreteSubject subject) { this.subject = subject; subject.attach(this); } @Override public void update() { observerState = subject.getState(); System.out.println("Observer state updated to: " + observerState); } }