`
Arron.li
  • 浏览: 134264 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

浅析java回调机制与观察者模式

    博客分类:
  • Java
阅读更多

1 java回调机制:

首先解释java回调机制,对象能够携带一些信息,这些信息允许它在稍后的某个时刻调用初始的对象,如果回调是通过指针实现的,那么就只能寄希望程序员不会误用此指针,java更小心仔细,所以没有在语言中包括指针。

回调的价值在于它的灵活性-可以在运行时动态决定需要调用什么方法。

import static net.mindview.util.Print.*;

interface Incrementable {
  void increment();
}

// Very simple to just implement the interface:
class Callee1 implements Incrementable {
  private int i = 0;
  public void increment() {
    i++;
    print(i);
  }
}	

class Caller {
  private Incrementable callbackReference;
  Caller(Incrementable cbh) { callbackReference = cbh; }
  void go() { callbackReference.increment(); }
}

public class Callbacks {
  public static void main(String[] args) {
    Callee1 c1 = new Callee1();
    Caller caller1 = new Caller(c1);
    caller1.go();
    caller1.go();
  }	
} 

Caller的构造器需要一个Incrementable的引用作为参数(可以在任意时刻捕获回调的引用),然后再以后的某个时刻,对象 可以使用此引用回调Callee类。

2 观察者模式与回调机制的联系:

首先解释观察者模式:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。

我们上例的回调机制可以把Caller作为一个主题(被观察者),Callee1作为观察者,当Caller调用go()时,通知Callee1的increment()方法改变状态,当然上个例子只是一对一的依赖,我们可以把回调机制是观察者模式的一种变体。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics