Observable(观测) 示例

原创 2006年06月16日 10:49:00

/*

Observable类用于创建可以观测到你的程序中其他部分的子类,当这种子类的对象发生变化时,观测类被通知。观测类必须实现定义了update()方法和Observer接口。当一个观测程序被通知到一个被观测对象的改变时,update()方法被调用。
一个被观测的对象必须符合两个简单规则:第一,如果它被改变了必须调用setChanged()方法。第二,当它准备通知观测程序它的改变时,必须调用notifyObserver()方法。

*/

//Demonstrate the Observable class and the Observer interface.
import java.util.*;
class Watcher implements Observer{
 public void update(Observable obj,Object arg){
  System.out.println("update() called,count is " + ((Integer)arg).intValue());
 }
}
//This is the class being observed.
class BeingWatched extends Observable{
 void counter(int period){
  for(;period>=0;period--){
   setChanged();
   notifyObservers(new Integer(period));
   try{
    Thread.sleep(100);
   }catch(InterruptedException e){
    System.out.println("Sleep interrupted!");
   }
  }
 }
}
class ObserverDemo{
 public static void main(String[] args)
 {
  BeingWatched observed = new BeingWatched();
  Watcher observing = new Watcher();
  //Add the observing to the list of observers for observed object.
  observed.addObserver(observing);
  observed.counter(10);
 }
}

/*

有多个对象可以用作观测程序,下面程序实现了两个观测类并且将每个类中的一个对象增加到BeingWatched观测程序列表中,第二个观测程序等待直到计数为0,随后振铃。

*/

//An object may be observed by two or more observers
import java.util.*;
//This is the first observing class.
class Watcher1 implements Observer{
 public void update(Observable obj,Object arg){
  System.out.println("update() called,count is " + ((Integer)arg).intValue());
 }
}
//This is the second obsrving class.
class Watcher2 implements Observer{
 public void update(Observable obj,Object arg){
  //Ring bell when done.
  if (((Integer)arg).intValue() == 0)
   System.out.println("Done" + '/7');
 }
}
//This is the class being observed.
class BeingWatched extends Observable{
 void counter(int period){
  for(;period>=0;period--){
   setChanged();
   notifyObservers(new Integer(period));
   try{
    Thread.sleep(100);
   }catch(InterruptedException e){
    System.out.println("Sleep interrupted!");
   }
  }
 }
}
class TwoObserversDemo{
 public static void main(String[] args)
 {
  BeingWatched observed = new BeingWatched();
  Watcher1 observing1 = new Watcher1();
  Watcher2 observing2 = new Watcher2();
  //add both observers
  observed.addObserver(observing1);
  observed.addObserver(observing2);
  observed.counter(10);
 }
}

Observable(可观察对象)

Http服务中的每个方法都返回一个Http Response对象的Observable实例.我们通常会把这个Observable实例转换成promise,并把这个promise返回给调用者,这一节我们...
  • qq_30970807
  • qq_30970807
  • 2016年12月21日 17:18
  • 2315

RxJava----操作符:组合操作符

本节介绍如何把多个数据源的数据组合为一个数据源的操作函数。 Concatenation 一个数据流发射完后继续发射下一个数据流是一种很常见的组合方法。 concat concat 操作函数把多...
  • qq_20198405
  • qq_20198405
  • 2016年04月28日 11:57
  • 7871

2015-11-13 (二)初探Observer和Observable的用法,了解Android 观察者模式的第一步

#面向自己写博客# #面向初学者互相激励#   大家好,上篇博文我讲了一个监控变量的思路,那么这篇博文,我们应该按照约定来讲: 观察者模型!   啊,让一个初学者来说这个,真的不是难为人么?虽然我...
  • chunge2788
  • chunge2788
  • 2015年11月13日 16:17
  • 2099

Rxjava的Observable创建操作符介绍

通过简单的例子介绍Rxjava的Observable的创建操作符:Create,From,Interval,Just,Range,Repeat,清楚明白地知道各创建操作符创建出来的Observable...
  • qq_16247851
  • qq_16247851
  • 2016年04月08日 17:28
  • 1424

rxJava的使用--Observable的创建及源码分析(一)

最近新开的项目需要用到rxJava.在网上找了一下资料,感觉资料好少,有一些资料虽然有例子,但例子都好复杂,对一个新手来说操作是挺麻烦的.因此,本人根据自己的理解写了一些例子.因此写下了本文,给记忆力...
  • x87648510
  • x87648510
  • 2016年05月28日 10:47
  • 3330

RxJS入门(2)---Observable的介绍

有好多种方式创建Observable,但是最常见的方式之一就是通过create操作符。在Rx.Observalbe对象的create操作符中需要传递一个回调函数,这个回调函数中需要传递一个订阅者参数(...
  • tianjun2012
  • tianjun2012
  • 2016年04月25日 22:44
  • 13079

【RxJava】Observable基本方法

1.前言随着RxJava越来越火,相信在2016年必定会大方异彩。 虽然前前后后看了不少RxJava的文章,但都没有积累下来,又没有在实际项目中使用过。 因此特意写下这篇文章记录学习过程。2.简介Rx...
  • qq_18402085
  • qq_18402085
  • 2016年02月02日 22:06
  • 6272

RXJava学习(二):Observable 和observel订阅流程的详细介绍

在上篇文章简单的介绍了RXjava的使用与概念,在这篇文章中将会大概的介绍Observable和Observel、Observel的实现类Subscriber,详细地分析subscribe订阅的代码及...
  • liuxinyu_91312
  • liuxinyu_91312
  • 2017年02月09日 16:27
  • 754

利用Angular2的Observables实现交互控制

利用Angular2的Observables实现交互控制
  • ztguang
  • ztguang
  • 2016年11月09日 22:44
  • 11599

RXSwift:Observable的创建和订阅

Observable是被观察者,也就是发出事件的事件(信号)源。一个观察者只有订阅了Observable,才能接收Observable发送的事件。Observable极其父类定义了创建一系列信号源的方...
  • wo190096
  • wo190096
  • 2017年01月16日 20:16
  • 1443
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Observable(观测) 示例
举报原因:
原因补充:

(最多只允许输入30个字)