Le modèle Observer répond à la nécessité de notifier automatiquement un ensemble d'objets (observateurs) lorsque l'état d'un autre objet (sujet) change. Ceci est utile dans les scénarios où un objet doit rester mis à jour avec les modifications apportées à un autre objet, comme dans les systèmes pilotés par événements ou les systèmes de notification.
Le modèle Observer implique deux composants principaux :
Le sujet maintient une liste d'observateurs et les informe en appelant leurs méthodes de mise à jour chaque fois qu'il y a un changement dans son état.
Un exemple pratique du modèle Observer est celui des systèmes de notification des réseaux sociaux, où les utilisateurs (observateurs) sont informés des activités de leurs amis (sujets), telles que les publications et les mises à jour de statut.
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 Listobservers = 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!"); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!