在Java中实现观察者模式一般需要定义两个主要的接口:主题(Subject)和观察者(Observer)。主题接口通常包括注册、移除和通知观察者的方法;观察者接口通常包括更新方法,用于接收主题的通知。
以下是一个简单的观察者模式的实现示例:
创建主题接口 Subject.java:public interface Subject { void registerObserver(Observer observer); void removeObserver(Observer observer); void notifyObservers();}创建观察者接口 Observer.java:public interface Observer { void update(String message);}创建具体的主题类 ConcreteSubject.java:import java.util.ArrayList;import java.util.List;public class ConcreteSubject implements Subject { private List<Observer> observers = new ArrayList<>(); @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("Some message from ConcreteSubject"); } }}创建具体的观察者类 ConcreteObserver.java:public class ConcreteObserver implements Observer { private String message; @Override public void update(String message) { this.message = message; System.out.println("Received message: " + message); }}在客户端代码中使用观察者模式:public class ObserverPatternExample { public static void main(String[] args) { ConcreteSubject subject = new ConcreteSubject(); ConcreteObserver observer1 = new ConcreteObserver(); ConcreteObserver observer2 = new ConcreteObserver(); subject.registerObserver(observer1); subject.registerObserver(observer2); subject.notifyObservers(); subject.removeObserver(observer1); subject.notifyObservers(); }}以上就是一个简单的观察者模式的实现示例,通过这种方式可以实现对象之间的松耦合,实现了主题和观察者之间的一对多关系。


