设计模式
回调模式
异步回调
简单介绍:
回调参数的接口类似于get和set方法,当通知方提出问题时,设置方回答答案,然后回调给通知方设置方给出的答案。
注意点:
1.通知类必须实现回调接口,等待从回调接口接收参数。
2.设置方必须在方法中,引入回调接口参数,通过调用回调接口设置答案。
3.异步的回调就是在通知方中新开一个线程来调用设置方。
案例
1:注册一个回调参数的接口
public interface CallBack {
void solve(String result);
}
2:参数的设置方
public class Li {
public void executeMessage(CallBack callBack,String question){
System.out.println("服务端:服务端接收到客户端发送的消息为:" + question);
// 模拟服务端需要对数据处理
try {
Thread.sleep(5 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
/**
* 小李办完自己的事情之后想到了答案是2
*/
String result = "答案是2";
/**
* 于是就打电话告诉小王,调用小王中的方法
* 这就相当于B类反过来调用A的方法D
*/
callBack.solve(result);
}
}
3:设置通知类
public class Wang implements CallBack{
private Li li;
public Wang(Li li) {
this.li = li;
}
public void askQuestion(String question){
System.out.println("客户端:发送的消息为:" + question);
new Thread(new Runnable() {
@Override
public void run() {
li.executeMessage(Wang.this,question);
}
}).start();
System.out.println("客户端:异步发送成功");
}
@Override
public void solve(String result) {
System.out.println("小李告诉小王的答案是--->"+result);
}
}
4:main方法引用
public static void main(String[] args) {
Li li=new Li();
Wang wang = new Wang(li);
wang.askQuestion("1+1=?");
}