- 浏览: 433045 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
CmdSmith:
这么构建出来的应该都是完全二叉树吧。。
java实现二叉树的构建以及3种遍历方法 -
haoyuan2012:
非常好,很受益
java实现二叉树的构建以及3种遍历方法 -
haizhiguang:
请问楼主是如何想到 nodeList.get(parent ...
java实现二叉树的构建以及3种遍历方法 -
Angry_Icarus:
赞赞赞
java实现二叉树的构建以及3种遍历方法 -
lilin9043:
刚刚用这个 不会用
UrlRewrite时需要注意的问题:action以及正则表达式
关于回调早就听说过,但是不曾理解过,周日的上午外面阳光灿烂,我却在这里琢磨回调,苦逼的程序员啊!不知道哪位先哲说过:你能看见多远的过去,你就能看见多远的未来。所以今天我们将采用渐进式的来学习回调:
定义:如果对象A调用对象B称为【顺调】,那么在对象A调用对象B之后,对象B再调用对象A,这时对象B对对象A的调用称为【回调】
第一种:对象A和对象B相互直接调用
Client类:
Server类:
运行结果1:
运行结果2:
第二种:借助第三方隔离Client和Server,避免它们之间的直接相互依赖
第三方ICallBack接口:
Client类:
Server类:
运行结果1:
运行结果2:
第三种:第三方接口可能需要负责传递数据,为了通用性采用泛型(广泛使用的类型)
ICallBack接口:
Client类:
Server类:
运行结果1:
运行结果2:
.
定义:如果对象A调用对象B称为【顺调】,那么在对象A调用对象B之后,对象B再调用对象A,这时对象B对对象A的调用称为【回调】
第一种:对象A和对象B相互直接调用
Client类:
package com.cdl.callback.http0; /** * 功能:为了便于描述,把Client称作对象A * * @author ocaicai@yeah.net * @date 2012-4-22 上午10:45:30 */ public class Client { public static void main(String[] args) { Server server = new Server(); //A调用B,将自己传递过去,以便于B直接回调 server.doRequest(new Client()); } public void doResponse(boolean result) { if(result){ System.out.println("Client Side:服务器响应成功!"); }else{ System.out.println("Client Side:服务器响应失败!"); } } }
Server类:
package com.cdl.callback.http0; import java.util.Random; /** * 功能:为了便于描述,把Server称作对象B<BR> * 定义:如果对象A调用对象B称为【顺调】,<BR> * 那么在对象A调用对象B之后,对象B再调用对象A,这时对象B对对象A的调用称为【回调】<BR> * * @author ocaicai@yeah.net * @date 2012-4-22 上午10:46:05 */ public class Server { /** * 由于client是对象A调用对象B时传递过来的参数<BR> * 所以对象B对client的使用可以看作是对象B对对象A的调用,即是回调:对象B再调用对象A * * @param client * 对象A调用对象B时传递过来的参数 */ public void doRequest(Client client) { boolean result = getDoRequestResult(); client.doResponse(result); } private boolean getDoRequestResult() { System.out.println("Server Side:服务器正在处理客户端的请求..."); int status = Math.abs(new Random().nextInt()); return status % 2 == 0 ? false : true; } }
运行结果1:
Server Side:服务器正在处理客户端的请求... Client Side:服务器响应成功!
运行结果2:
Server Side:服务器正在处理客户端的请求... Client Side:服务器响应失败!
第二种:借助第三方隔离Client和Server,避免它们之间的直接相互依赖
第三方ICallBack接口:
package com.cdl.callback.http1; /** * 功能:回调接口<BR> * 借助第三方隔离Client和Server,避免它们之间的直接相互依赖<BR> * * @author ocaicai@yeah.net * @date 2012-4-22 上午10:07:18 */ public interface ICallBack { public void onSuccess(); public void onFailure(); }
Client类:
package com.cdl.callback.http1; /** * 功能:为了便于描述,把Client称作对象A * * @author ocaicai@yeah.net * @date 2012-4-22 上午10:45:30 */ public class Client { public static void main(String[] args) { Server server = new Server(); //如果直接传递自己,这样的依赖性太大,所以采用接口 server.doRequest(new ICallBack() { @Override public void onSuccess() { System.out.println("Client Side:服务器响应成功!"); } @Override public void onFailure() { System.out.println("Client Side:服务器响应失败!"); } }); } }
Server类:
package com.cdl.callback.http1; import java.util.Random; /** * 功能:为了便于描述,把Server称作对象B<BR> * 定义:如果对象A调用对象B称为【顺调】,<BR> * 那么在对象A调用对象B之后,对象B再调用对象A,这时对象B对对象A的调用称为【回调】<BR> * * @author ocaicai@yeah.net * @date 2012-4-22 上午10:46:05 */ public class Server { /** * 由于callBack是对象A调用对象B时传递过来的参数<BR> * 所以对象B对callBack的使用可以看作是对象B对对象A的调用,即是回调:对象B再调用对象A * * @param callBack * 对象A调用对象B时传递过来的参数 */ public void doRequest(ICallBack callBack) { boolean result = getDoRequestResult(); if (result) callBack.onSuccess(); else callBack.onFailure(); } private boolean getDoRequestResult() { System.out.println("Server Side:服务器正在处理客户端的请求..."); int status = Math.abs(new Random().nextInt()); return status % 2 == 0 ? false : true; } }
运行结果1:
Server Side:服务器正在处理客户端的请求... Client Side:服务器响应失败!
运行结果2:
Server Side:服务器正在处理客户端的请求... Client Side:服务器响应成功!
第三种:第三方接口可能需要负责传递数据,为了通用性采用泛型(广泛使用的类型)
ICallBack接口:
package com.cdl.callback.http2; /** * 功能:回调接口,加上了一个泛型 <BR> * 借助第三方隔离Client和Server,避免它们之间的直接相互依赖<BR> * * @author ocaicai@yeah.net * @date 2012-4-22 上午10:07:18 */ public interface ICallBack<T> { public void onSuccess(T result); public void onFailure(); }
Client类:
package com.cdl.callback.http2; /** * 功能:为了便于描述,把Client称作对象A * * @author ocaicai@yeah.net * @date 2012-4-22 上午10:45:30 */ public class Client { public static void main(String[] args) { Server server = new Server(); server.doRequest(new ICallBack<String>() { @Override public void onSuccess(String result) { System.out.println("Client Side:服务器响应成功!"); System.out.println(result); } @Override public void onFailure() { System.out.println("Client Side:服务器响应失败!"); } }); } }
Server类:
package com.cdl.callback.http2; import java.util.Random; /** * 功能:为了便于描述,把Server称作对象B<BR> * 定义:如果对象A调用对象B称为【顺调】,<BR> * 那么在对象A调用对象B之后,对象B再调用对象A,这时对象B对对象A的调用称为【回调】<BR> * * @author ocaicai@yeah.net * @date 2012-4-22 上午10:46:05 */ public class Server { /** * 由于callBack是对象A调用对象B时传递过来的参数<BR> * 所以对象B对callBack的使用可以看作是对象B对对象A的调用,即是回调:对象B再调用对象A * * @param callBack * 对象A调用对象B时传递过来的参数 */ public void doRequest(ICallBack<String> callBack) { boolean result = getDoRequestResult(); if(result) callBack.onSuccess("服务器Message:谢谢客户端的访问!"); else callBack.onFailure(); } private boolean getDoRequestResult() { System.out.println("Server Side:服务器正在处理客户端的请求..."); int status = Math.abs(new Random().nextInt()); return status % 2 == 0 ? false : true; } }
运行结果1:
Server Side:服务器正在处理客户端的请求... Client Side:服务器响应成功! 服务器Message:谢谢客户端的访问!
运行结果2:
Server Side:服务器正在处理客户端的请求... Client Side:服务器响应失败!
.
发表评论
-
java源文件夹打包
2012-04-01 12:49 1108有时候我们可能需要修改源文件来适应自己的需求 案 ... -
使用命令行的方式启动Mina
2012-02-29 09:50 0/** * 使用命令行的方式启动Mina ... -
MD5的工具方法使用
2011-12-07 10:33 1578package com.cdl.test; impo ... -
二进制基础(负数转二进制)
2011-10-30 14:49 2168比如,假设有一 int 类型的数,值为5,那么,我们知道它在计 ... -
java.util包的集合框架应用
2011-10-27 23:19 1298package mix.test; import j ... -
对Entity的未用字段进行借鸡下蛋
2011-09-20 15:00 1198. 1.实体 public class Image ... -
不要再困扰在String与StringBuffer(StringBuilder)的区别上鸟
2011-06-29 16:44 1136无论是初学者还是在java ... -
在myeclipse8.5中导出uml类图
2011-06-21 19:59 1425百度一下:myeclipse类图 . http://wenk ... -
用一下UML建模工具Rational Rose以及类图的基本关系
2011-06-09 14:24 10725. 基本的类图关系: 编码实现: packa ... -
统计某一数组中重复数字的次数
2011-04-28 18:15 5669. 今天上谯老师软件项目管理方法与实践课时给出了一个他曾经留 ... -
模仿String.indexOf,判断一个字符串是否包含另一个字符串
2011-04-26 15:42 4268. 目录: 一.方法介绍 二.图示意 三.源代码 一.方法 ... -
在MyEclipse中添加Java、Struts...源码
2011-03-09 15:14 1109三种方法: 第一种: “window”-> " ... -
使用接口的核心原因:为了向上转型为多个基类型,以及由此带来的灵活。
2010-12-01 13:45 1099package thinkingInJava.interf ... -
后台打印在参看程序执行流程中的重要作用
2010-11-15 13:19 970附注:在每个方法里打印”进入这个方法、方法的名称”,这样 ... -
自定义类中2个元素的比较升级到3个元素的比较
2010-10-28 23:26 1199可以先参考一下前面的一篇文章:为了比较,让自己的类实现Comp ... -
给你一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。
2010-10-26 23:59 2769关于Map.Entry可以参看在容器中使用增强的for循环, ... -
在容器中使用增强的for循环,简洁大气,结构清晰
2010-10-26 21:44 1461除了增强的for循环使代 ... -
求模( Modulus )与求余(Remainder) (转)
2010-10-26 17:37 2422import java.math.BigInteger; ... -
今天非常高兴,解决了一个由来已久的单词出现频率统计问题。以及容器浅总结
2010-10-26 16:33 2625总述:人与动物的最大 ... -
为了比较,让自己的类实现Comparable接口,重写compareTo
2010-10-26 14:56 20744首先需要实现带泛型的Comparable接口,按照自己想要 ...
相关推荐
通过简单的自定义Dialog来理解接口回调callback机制
本文实例分析了C++中回调函数(CallBack)的用法。分享给大家供大家参考。具体分析如下: 如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。 其错误是普通的C++成员函数都隐含了一个传递...
(7)如果采用本应用中连接数据库的方法调试不通,可以参照20章中通过ODBC连接数据库的方法来修改 将以下代码: Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver") String driver = "jdbc:microsoft:...
Qt使用回调函数方(callback)
Delphi MIDAS 回调 (CallBack) Delphi MIDAS 回调 (CallBack)
C++中回调(CallBack)的使用思路C++中回调(CallBack)的使用思路C++中回调(CallBack)的使用思路
关于回调函数的基本概念和使用技巧. 个人觉得不错. 当然了. 网上可以搜到更好的,
这个资源解决了我很长时间不理解回调是什么,怎么用。
halcon外触发get_framegrabber_callback注册回调函数方法,c#代码
回调技术(CallBack), 详细阐述请参见:http://blog.csdn.net/kissqi/archive/2009/03/13/3988052.aspx
CallBack回调函数
回调函数Callback_Function
对okhttputils回调封装
ASP.NET2.0实现无刷新客户端回调的Callback机制
JNI callback Android
本文实例讲述了JS回调函数 callback的理解与使用。分享给大家供大家参考,具体如下: 基本理解一个概念 回调函数回头再调用函数,等主干事情干完了,再回头干分支上的事情。 官方定义 A callback is a function ...
callback回调函数,很多人不太理解,可以参考一下
手把手教你写回调函数源代码,详细的讲述了回调函数的编写过程以及linux库文件的制作
网上的回调函数都是API例子,学习函数指针倒是不错,可是很难让初学者立即应用。常见的情况是辅线程完成某事件后需要“通知”主界面,比如常见的进度条——线程中完成一定的进度后即通知主界面显示到一定的刻度。本...
NULL 博文链接:https://onestopweb.iteye.com/blog/2337794