当前位置:   article > 正文

设计模式-行为型模式-观察者模式

设计模式-行为型模式-观察者模式

观察者模式用于定义对象间的一种一对多的依赖关系,使得当一个对象状态变化时,其所有依赖对象都会收到通知并自动更新

  1. /**
  2. * 行为型模式--观察者模式
  3. * 观察者模式用于定义对象间的一种一对多的依赖关系,使得当一个对象状态变化时,其所有依赖对象都会收到通知并自动更新
  4. */
  5. public class ObserverMode {
  6. // 观察者接口
  7. interface Observer {
  8. void update();
  9. }
  10. // 主题接口
  11. interface Subject {
  12. void registerObserver(Observer observer);
  13. void removeObserver(Observer observer);
  14. void notifyObservers();
  15. }
  16. // 具体主题类
  17. static class ConcreteSubject implements Subject {
  18. private final java.util.List<Observer> observers = new java.util.ArrayList<>();
  19. public void registerObserver(Observer observer) {
  20. observers.add(observer);
  21. }
  22. public void removeObserver(Observer observer) {
  23. observers.remove(observer);
  24. }
  25. public void notifyObservers() {
  26. for (Observer observer : observers) {
  27. observer.update();
  28. }
  29. }
  30. }
  31. // 具体观察者类
  32. static class ConcreteObserver implements Observer {
  33. public void update() {
  34. System.out.println("Received message: Observer is notifyObservers");
  35. }
  36. }
  37. // ConcreteSubject是一个具体的主题类,它实现了Subject接口,并包含了一组观察者。
  38. // ConcreteObserver是一个具体的观察者类,它实现了Observer接口。
  39. // 通过观察者模式,我们可以实现对象间的解耦,当主题状态发生变化时,观察者会收到通知并进行相应的更新
  40. // 使用观察者模式
  41. public static void main(String[] args) {
  42. ConcreteSubject subject = new ConcreteSubject();
  43. Observer observer = new ConcreteObserver();
  44. subject.registerObserver(observer);
  45. subject.notifyObservers();
  46. subject.removeObserver(observer);
  47. }
  48. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/491326
推荐阅读
相关标签
  

闽ICP备14008679号