The Observer pattern addresses the need to automatically notify a set of objects (observers) when the state of another object (subject) changes. This is useful in scenarios where one object needs to stay updated with changes in another object, such as in event-driven systems or notification systems.
The Observer pattern involves two main components:
The subject maintains a list of observers and notifies them by calling their update methods whenever there is a change in its state.
A practical example of the Observer pattern is in social media notification systems, where users (observers) are notified of their friends' (subjects) activities, such as posts and status updates.
java // Observer Interface public interface Observer { void update(String message); } // Subject Interface public interface Subject { void registerObserver(Observer observer); void removeObserver(Observer observer); void notifyObservers(); } // Concrete Subject public class SocialMediaAccount implements Subject { private List<Observer> observers = new ArrayList<>(); private String statusUpdate; @Override public void registerObserver(Observer observer) { observers.add(observer); } @Override public void removeObserver(Observer observer) { observers.remove(observer); } @Override public void notifyObservers() { for (Observer observer : observers) { observer.update(statusUpdate); } } public void postUpdate(String status) { this.statusUpdate = status; notifyObservers(); } } // Concrete Observer public class Follower implements Observer { private String name; public Follower(String name) { this.name = name; } @Override public void update(String message) { System.out.println(name + " received update: " + message); } } // Client Code public class Client { public static void main(String[] args) { SocialMediaAccount account = new SocialMediaAccount(); Observer follower1 = new Follower("Alice"); Observer follower2 = new Follower("Bob"); account.registerObserver(follower1); account.registerObserver(follower2); account.postUpdate("Hello, followers!"); account.postUpdate("Check out my new post!"); account.removeObserver(follower1); account.postUpdate("Another update!"); } }
The above is the detailed content of Understanding the Observer Design Pattern in Java. For more information, please follow other related articles on the PHP Chinese website!