设计模式之观察者模式

一时失言乱红尘 2022-07-13 07:54 196阅读 0赞
  1. 观察者模式:一对多的关系模式,一为状态可以改变的对象,多为依赖该对象的众多观察者,jdk中已经有该模式的API和类 java.util.Observablejava.util.Observer。可观察者,即那个一,是extendsjava.util.Observable的扩展类;观察者,即Observer,必须实现java.util.Observer接口中的update()方法。当可观察者的状态改变时,可以通知到多个依赖其的观察者,如下为一个小小栗子,当可观察者的温度temp改变时,观察者随时都能感受并做出相应反应:
  2. package jsoup;
  3. import java.util.Observable;
  4. import java.util.Random;
  5. //可观察者
  6. public class ObserverPattern extends Observable {
  7. public void setChange(int temp){
  8. setChanged();
  9. notifyObservers(temp); //当状态temp温度改变时,通知所有注册在该对象中的观察者,并调用观察者的update()方法,可以进Observable看源码
  10. }
  11. //测试代码
  12. public static void main(String[] args){
  13. ObserverPattern subject = new ObserverPattern();
  14. Observer observer = new Observer(subject);
  15. //当可观察者状态改变时,依赖其的观察者可以随时感受到状态的改变并做出相应的反应
  16. Random random = new Random(47);
  17. int count = 0;
  18. while(count<10){
  19. int r = random.nextInt(100);
  20. subject.setChange(r);
  21. count++;
  22. }
  23. }
  24. }
  25. //观察者
  26. class Observer implements java.util.Observer {
  27. Observable subject;
  28. int temp;
  29. public Observer(Observable o) {
  30. this.subject = o;
  31. subject.addObserver(this); //将实例出的观察者注册到可观察者中
  32. }
  33. @Override
  34. public void update(Observable o, Object arg) { //重写Observer API中的update()
  35. temp = (int) arg;
  36. disPlay();
  37. }
  38. private void disPlay() {
  39. System.out.println("temp changed, temp=" + temp);
  40. }
  41. }

发表评论

表情:
评论列表 (有 0 条评论,196人围观)

还没有评论,来说两句吧...

相关阅读

    相关 设计模式观察模式

    观察者模式 什么是观察者模式 观察者模式属于行为模式的一种,定义了对象的通用交流方式。 观察者模式定义了一对多的关系,一个对象改变了状态,则其它所有依赖

    相关 设计模式观察模式

    前言 使用场景: 1、拍卖的时候,拍卖师观察最高标价,然后通知给其他竞价者竞价。 2、西游记里面悟空请求菩萨降服红孩儿,菩萨洒了一地水招来一个老乌龟,这个乌龟

    相关 设计模式观察模式

    当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 即目标发生更

    相关 设计模式观察模式

    定义 当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。观察者模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步

    相关 设计模式观察模式

     今天放假,又有时间继续啃《java设计模式》这本书了。每次学会一种设计模式内心都会有一种小小的成就感,但是懂是懂了,不知道会不会用。主要是现在没有什么项目经验,设计模式学了也

    相关 设计模式观察模式

    [上一篇:设计模式之策略模式][Link 1] 故事要从气象站说起,气象站有个WeatherData对象,这个对象负责拿到所有的气象数据(温度、湿度、气压),而气象站同时也

    相关 设计模式观察模式

    1 观察者模式 当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都

    相关 设计模式——观察模式

    > 设计模式: > > 前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定。而是一套用来提高代码可复用性、可维护性、可读性、稳健性、以及安全性的解决方案