- 浏览: 83829 次
- 性别:
- 来自: 北京
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()方法改变状态,当然上个例子只是一对一的依赖,我们可以把回调机制是观察者模式的一种变体。
首先解释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()方法改变状态,当然上个例子只是一对一的依赖,我们可以把回调机制是观察者模式的一种变体。
发表评论
-
组合or继承
2013-05-27 11:54 865到底使用组合还是继承是每本讲设计的资料里都要讨论一番的话题 ... -
Java访问控制private之我见
2013-05-24 11:36 819最近待业在家,遂有空重新读了thinking in Java这 ... -
XML 系列教程
2012-05-06 12:50 612http://www.w3school.com.cn/x.as ... -
面向接口编程详解
2012-04-19 21:42 1140面向接口编程详解 2009-04-23 作者:张洋 来源: ... -
Java程序设计之-复合优先于继承
2012-04-03 10:33 1489组合 通过创建一个由其他对象组合的对象来获得新功能的重用方法 ... -
java学习之路(转)
2012-03-30 15:01 816(一) 从事软件 ... -
java内部类
2012-03-28 16:26 902一、 定义 放在一个类的内部的类我们就叫内部类。 二、 作用 ... -
为什么匿名内部类只能访问其所在方法中的final变量(转)
2012-03-28 15:45 1094(1).所谓“局部内部类”就是在对象的方法成员内部定义的类。而 ... -
Java访问权限修饰符(转)
2012-03-28 11:20 11071、Class类的访问权限: ... -
【java】好书推荐
2012-03-26 15:31 1465Java软件架构师所要需的东西 作为Java程序员来说,最痛 ... -
Java绝对好文,转载的!(转载)
2012-03-25 14:45 822想来学习Java也有两个年头了,永远不敢说多么精通,但也想谈谈 ... -
理解java动态加载机制
2012-03-20 00:01 10371.java动态性 java是一种 ... -
热部署、热加载
2012-03-19 14:14 3694不重启Tomcat有两种方式:热部署、热加载 热部署:容 ... -
Registry of Singleton 模式(转)
2012-03-06 10:01 796考虑使用 Singleton 模式 时拥有子类别的问题,在Si ... -
单例模式(Singleton Pattern)
2012-03-05 20:40 7026.单例模式(Singleton Pattern) 前面说提到 ... -
java.util.concurrent 多线程框架
2012-02-26 16:15 804http://daoger.iteye.com/blog/14 ... -
线程----BlockingQueue (转),java
2012-02-26 13:50 818/** 本例介绍一个 ... -
关于多个线程同时调用单例模式的对象,该对象中方法的局部变量是否会受多个线程的影响
2012-02-12 12:16 2956对于那些会以多线程运行的单例类,例如Web应用中的Servle ... -
Java线程同步机制synchronized关键字的理解
2011-12-25 14:34 785由于同一进程的多个线 ... -
synchronized与static synchronized 的区别
2011-12-24 22:48 6781.synchronized与static synchroni ...
相关推荐
### Java观察者模式详解 #### 一、观察者模式概述 观察者模式是一种常用的设计模式,主要用于处理对象间的一对多依赖关系。当一个对象(主题)的状态发生变化时,所有依赖于它的对象(观察者)都会收到通知并自动...
观察者模式的浅析
### 浅析JAVA异常处理机制 #### 一、Java异常处理机制概述 异常处理是Java语言中的一个重要机制,它能够确保程序在遇到不可预料的情况时仍能维持稳定运行。异常处理主要包括三个方面:捕获异常、控制程序流程以及...
### 浅析Java设计模式【3】——代理 #### 一、代理模式概述 代理模式是一种行为型设计模式,主要用于在客户端与目标对象之间起到一个中介的作用,通过代理对象来控制对目标对象的访问。代理模式的核心在于它可以...
在阅读《设计模式浅析》这篇论文时,我们可以期待作者对这些模式的深入解析,包括它们的适用场景、如何在Java中实现,以及如何通过实例来理解它们的效果。此外,论文可能还会涉及设计原则,如开闭原则(对扩展开放,...
浅析Java异常处理机制 在 Java 编程中,异常处理机制是非常重要的一部分。任何一种程序设计语言编写的程序,在运行期间都有可能会出现一个不可能执行的操作,该操作的结果会导致程序运行错误。我们可以使用异常处理...
浅析JAVA代理模式.pdf
浅析Java卡应用执行机制及虚拟机能效优化 本文将对Java卡应用执行机制和虚拟机的能效优化进行深入分析。首先,我们将介绍Java卡应用执行机制的基本过程,然后讨论影响Java卡运算能效的因素,并探讨Java卡性能优化的...
在Android开发中,接口回调是一种常见且重要的编程模式,它允许组件之间进行异步通信,尤其是在处理耗时操作如网络请求、数据库操作时。本文将深入解析Android接口回调机制,并探讨如何避免多线程环境下回调数据同步...
浅析java常用的设计模式.doc
Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时动态地获取类的信息并操作类的对象。反射机制的核心在于,它打破了编译时的束缚,使得代码具有更高的灵活性和可扩展性。在Java中,反射主要依赖于`...
浅析Java语言中的异常处理机制.pdf
本文简要分析了C#的回调机制。分享给大家供大家参考。具体分析如下: 1.回调听起来高大上,实际上本质就是委托,回调是委托的一种应用,其本质就是委托。 2.一般回调多用在线程,因此多声明为类级变量。(和类在同一...
四、回调函数的优点与挑战 回调函数提供了一种灵活的方式来组织代码,尤其是在处理异步操作时。然而,回调函数的使用也可能导致一些问题,例如"回调地狱",即过多的嵌套回调,使代码难以理解和维护。为了解决这个...
Java智能卡的设计初衷是为了在芯片研发和语言开发调试阶段提供一种更加通用和便捷的开发方式,从而取代以往只能用特定芯片匹配的汇编语言开发模式。 Java智能卡的应用与开发现状受到价格、技术水平和理论认识等因素...