Java观察者模式怎么使用

avatar
作者
猴君
阅读量:0

在Java中使用观察者模式,需要以下几个步骤:

  1. 定义观察者接口(Observer):该接口中定义了观察者需要实现的方法,通常包括update()方法,用于接收被观察者发送的通知。

  2. 定义被观察者接口(Subject):该接口中定义了被观察者需要实现的方法,通常包括注册观察者、移除观察者、通知观察者等方法。

  3. 实现观察者接口(具体观察者):针对具体的观察者对象,实现观察者接口中的方法,根据具体需求进行相应的操作。

  4. 实现被观察者接口(具体被观察者):针对具体的被观察者对象,实现被观察者接口中的方法,包括注册观察者、移除观察者、通知观察者等。

  5. 在被观察者中维护观察者列表:被观察者需要维护一个观察者列表,用于存储注册的观察者对象。

  6. 在被观察者的状态变化时通知观察者:当被观察者的状态发生变化时,需要遍历观察者列表,调用每个观察者的update()方法,将通知发送给观察者。

下面是一个简单的示例代码:

// 定义观察者接口 interface Observer {     void update(String message); }  // 定义被观察者接口 interface Subject {     void registerObserver(Observer observer);     void removeObserver(Observer observer);     void notifyObservers(String message); }  // 实现观察者接口 class ConcreteObserver implements Observer {     private String name;      public ConcreteObserver(String name) {         this.name = name;     }      public void update(String message) {         System.out.println(name + " received message: " + message);     } }  // 实现被观察者接口 class ConcreteSubject implements Subject {     private List<Observer> observers = new ArrayList<>();      public void registerObserver(Observer observer) {         observers.add(observer);     }      public void removeObserver(Observer observer) {         observers.remove(observer);     }      public void notifyObservers(String message) {         for (Observer observer : observers) {             observer.update(message);         }     } }  public class Main {     public static void main(String[] args) {         ConcreteSubject subject = new ConcreteSubject();          Observer observer1 = new ConcreteObserver("Observer1");         subject.registerObserver(observer1);          Observer observer2 = new ConcreteObserver("Observer2");         subject.registerObserver(observer2);          subject.notifyObservers("Hello, world!");     } } 

运行上述代码,输出结果为:

Observer1 received message: Hello, world! Observer2 received message: Hello, world! 

可以看到,当被观察者发送通知时,观察者接收到了相应的消息。

广告一刻

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