一、回调函数简要
回调函数其实是一种编程思想,尤其是在服务端或者B端开发会大量使用到。之前写了不少项目代码,但是大多都是C端,最近接触了一个服务端项目,里面设计到大量的这种思想。现在记录一下,通过代码应该很好理解这种模式.
二、代码
/**
* 顶层接口
*/
public interface Callback {
}
//===============================
/**
* 具体消息回调接口
*/
public interface MessageCallback<T> extends Callback {
/**
*
* @param msg 消息
* @param account 用户
*/
void onSuccess(T msg,T account);
void onFail(T msg,T account);
//...断线重连etc
}
//=====================================
/**
* 消息客户端
*/
public class MessageClient implements MessageCallback<String> {
private String msg;
private String account;
public MessageClient(String msg, String account) {
this.msg = msg;
this.account = account;
}
@Override
public void onSuccess(String msg, String account) {
System.out.println("进入回调函数--"+"消息推送成功,"+"客户是:"+account+" 推送的消息是:"+msg);
}
@Override
public void onFail(String msg, String account) {
System.out.println("进入回调函数--"+"消息推送失败,"+"客户是:"+account+" 推送的消息是:"+msg);
}
/**
* 推送消息至服务端
*/
public void sendMsgToSvr(){
System.out.println("开始推送消息到服务端!!!");
new MessageServer().send(msg,account,this);
}
//====================================================
/**
* 消息服务端
*/
public class MessageServer {
public void send(String msg, String account, MessageClient messageClient) {
System.out.printf("处理[%s]推送的[%s]\n",account,msg);
//处理完业务逻辑 echo结果给客户端
messageClient.onSuccess(msg,account);
}
}
//=========================================================
/**
* 测试样例类
*/
public class CallBackTestExample {
public static void main(String[] args) {
final String msg = "这是一条测试消息";
final String account = "lsy_QAQ";
new MessageClient(msg,account).sendMsgToSvr();
}
}