您的位置:首页 > 编程语言 > Java开发

java异步回调模式栗子(2015-11-30 00:43:37)

2015-11-30 00:49 435 查看
关于回调模式的概念这里不做介绍,直接上代码

package com.dreyer.pattern.callback;
/**
* @description 回调模式——回调接口类
* @author Dreyer
* @email hy.dreyer@qq.com
* @date 2015年11月29日 下午11:57:56
* @version 1.0
*/
public interface CSCallBack {
/**
* 回调函数
*
* @param status
*            回调的状态码
*/
public void process(String status);
}


package com.dreyer.pattern.callback;
/**
* @description 回调模式——模拟服务端类
* @author Dreyer
* @email hy.dreyer@qq.com
* @date 2015年11月29日 下午11:59:44
* @version 1.0
*/
public class Server {
public void getCliengMsg(CSCallBack csCallBack, String msg) {
System.out.println("服务端:接受到来自客户端的消息:" + msg);
// 模拟服务端对数据的处理操作
try {
Thread.sleep(3 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 处理成功后,对回调接口发送回调信息
String status = "200";
System.out.println("服务端:数据处理成功,返回状态码:" + status);
csCallBack.process(status);
}
}


package com.dreyer.pattern.callback;
/**
* @description 回调模式——模拟客户端类
* @author Dreyer
* @email hy.dreyer@qq.com
* @date 2015年11月29日 下午11:59:06
* @version 1.0
*/
public class Client implements CSCallBack {
private Server server;
public Client(Server server) {
this.server = server;
}
public void sendMsg(final String msg) {
System.out.println("客户端:发送的消息为:" + msg);
// 模拟异步发送消息
new Thread(new Runnable() {
@Override
public void run() {
server.getCliengMsg(Client.this, msg);
}
}).start();
System.out.println("客户端:异步发送消息成功!");
}
@Override
public void process(String status) {
System.out.println("客户端:接收到来自服务端的回调状态码:" + status);
}
}


测试类

package com.dreyer.pattern.callback;
/**
* @description
* @author Dreyer
* @email hy.dreyer@qq.com
* @date 2015年11月30日 上午12:12:26
* @version 1.0
*/
public class CallBackTest {
public static void main(String[] args) {
Client client = new Client(new Server());
client.sendMsg("Hello Word!");

}

打印输出结果:

客户端:发送的消息为:Hello Word!

客户端:异步发送消息成功!

服务端:接受到来自客户端的消息:Hello Word!

服务端:数据处理成功,返回状态码:200

客户端:接收到来自服务端的回调状态码:200

packageInfo附录:

java异步回调机制的栗子

概念:回调是一种双向的调用模式,即:you call me,i will call you back

客户端给服务端发送一个请求(消息),服务端接收到这个请求(消息),做完相应的业务流程之后,再给客户端发一个消息告诉客户端这边的处理情况。

关键的点是:在给Server服务端发送消息的时候,将Client的引用作为参数传入,这样Server端处理完业务逻辑之后,调用Client的回调函数即可完成通知回调
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java回调模式