import java.util.ArrayList;
import java.util.List;
interface Observer {
void update(String news);
}
class NewsChannel implements Observer {
private String name;
NewsChannel(String name) { this.name = name; }
public void update(String news) {
System.out.println(name
+ " received: " + news);
}
}
class NewsAgency {
private List<Observer> observers = new ArrayList<>();
private String news;
void addObserver(Observer observer) {
observers.add(observer);
}
void removeObserver(Observer observer) {
observers.remove(observer);
}
void setNews(String news) {
this.news = news;
for (Observer observer : observers) {
observer.update(news);
}
}
}
public static void main(String[] args) {
NewsAgency agency = new NewsAgency();
NewsChannel cnbc = new NewsChannel("CNBC");
NewsChannel bbc = new NewsChannel("BBC");
agency.addObserver(cnbc);
agency.addObserver(bbc);
agency.setNews("Breaking News!");
}The Observer pattern defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. It is commonly used in event-driven systems, such as GUI frameworks, notification services, and real-time data feeds, where multiple components need to stay in sync with a shared state.