阅读量:0
在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(); } }
以上就是一个简单的观察者模式的实现示例,通过这种方式可以实现对象之间的松耦合,实现了主题和观察者之间的一对多关系。