Java中的观察者模式如何实现

avatar
作者
猴君
阅读量:0

在Java中实现观察者模式一般需要定义两个主要的接口:主题(Subject)和观察者(Observer)。主题接口通常包括注册、移除和通知观察者的方法;观察者接口通常包括更新方法,用于接收主题的通知。

以下是一个简单的观察者模式的实现示例:

  1. 创建主题接口 Subject.java:
public interface Subject {     void registerObserver(Observer observer);     void removeObserver(Observer observer);     void notifyObservers(); } 
  1. 创建观察者接口 Observer.java:
public interface Observer {     void update(String message); } 
  1. 创建具体的主题类 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");         }     } } 
  1. 创建具体的观察者类 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);     } } 
  1. 在客户端代码中使用观察者模式:
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();     } } 

以上就是一个简单的观察者模式的实现示例,通过这种方式可以实现对象之间的松耦合,实现了主题和观察者之间的一对多关系。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!