JAVA观察者模式

编程入门 行业动态 更新时间:2024-10-26 00:22:54

JAVA<a href=https://www.elefans.com/category/jswz/34/1765125.html style=观察者模式"/>

JAVA观察者模式

Java观察者模式

import java.util.ArrayList;  
import java.util.List;  // 主题接口,定义了添加、删除观察者等方法  
interface Subject {  void register(Observer observer);  void unregister(Observer observer);  void notifyObservers(String message);  
}  // 具体主题类,实现了主题接口,并维护了一个观察者列表  
class ConcreteSubject implements Subject {  private List<Observer> observers = new ArrayList<>();  private String message;  @Override  public void register(Observer observer) {  observers.add(observer);  }  @Override  public void unregister(Observer observer) {  observers.remove(observer);  }  @Override  public void notifyObservers(String message) {  this.message = message;  for (Observer observer : observers) {  observer.update(message);  }  }  
}  // 观察者接口,定义了观察者更新方法  
interface Observer {  void update(String message);  
}  // 具体观察者类,实现了观察者接口,并实现了更新方法  
class ConcreteObserver implements Observer {  private String name;  public ConcreteObserver(String name) {  this.name = name;  }  @Override  public void update(String message) {  System.out.println(name + " received message: " + message);  }  
}  // 测试类,创建主题和观察者对象,并测试通知功能  
public class Test {  public static void main(String[] args) {  Subject subject = new ConcreteSubject();  // 创建主题对象  Observer observer1 = new ConcreteObserver("Observer 1");  // 创建观察者1对象  Observer observer2 = new ConcreteObserver("Observer 2");  // 创建观察者2对象  subject.register(observer1);  // 主题添加观察者1  subject.register(observer2);  // 主题添加观察者2  subject.notifyObservers("Hello World!");  // 主题通知所有观察者更新,输出"Observer 1 received message: Hello World!"和"Observer 2 received message: Hello World!"  subject.unregister(observer1);  // 主题移除观察者1,此时只有观察者2存在,通知输出"Observer 2 received message: Hello World!"  subject.notifyObservers("Hello Java!");  // 主题通知所有观察者更新,只有观察者2收到了消息,输出"Observer 2 received message: Hello Java!"。由于移除了观察者1,因此没有输出"Observer 1 received message: Hello Java!"。  }  
}

更多推荐

JAVA观察者模式

本文发布于:2023-12-06 03:57:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1666367.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:观察者   模式   JAVA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!