`
369128396
  • 浏览: 80929 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • java
 
阅读更多
1 java回调机制:
首先解释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