夫回调者,回了个调也。
当年基友谈到回调,一言蔽之:when you call me ,i will call you.慨为经典。
好吧其实好像也在别的地方听过,不过才疏学浅见识浅薄,记不源头了。
要想简单掌握一个游戏,第一个需要知道的是什么?游戏规则。
根据我的理解,简单回调满足的规则应该是:若A调B,结果需在A中处理。也就是说,调用者最后需要处理的结果,应该是在调用者身上处理的。
小例子
梗概:爷爷让孙子去打个酱油,孙子很忙,要把事做完了才了去打酱油,那爷爷已经困了要睡觉,等不了(异步概念),就让孙子打好了酱油叫他起床。
先把事件写好:
public interface Call {
//打电话叫人
void sendMessage(Object obj);
}
接下来是爷爷(调用人)部分:
public class Oujisang implements Call {
//爷爷要处理的事
@Override
public void sendMessage(Object obj) {
System.out.println("起床了");
//结果
System.out.println(this.getClass().getName()+"获得物品:酱油+1");//这个getname就是拿来突出谁才是问题的发起者
}
public static void main(String[] args) {
Oujisang ouj = new Oujisang();
boy nj = new boy(ouj);
//起因
nj.call("打瓶酱油,打完了叫我起床");
}
}
最后是孙子部分
public class boy {
private Call call;
//注意,是谁打的电话,叫做什么事,这点要记清楚
public boy(Call call) {
this.call = call;
}
public void call(final String str) {
//经过
System.out.println("收到录音:"+str);
System.out.println("现在忙,骚等");
new Thread(new Runnable() {
@Override
public void run() {
try {
//就忙了3s
Thread.sleep(3000);
System.out.println("忙完了");
System.out.println("酱油已就绪");
call.sendMessage(str);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}
结束。
输出:
收到录音:打瓶酱油,打完了叫我起床
现在忙,骚等
忙完了
酱油已就绪
起床了
Oujisang获得物品:酱油+1
注意起因经过和结果分别在哪里实现,解铃还须系铃人,就是回调规则。
理解就这些,还请诸位英雄不吝赐教。
关于回调的简单理解(java)
最新推荐文章于 2024-04-26 14:00:07 发布