老方找华哥有事
华哥在忙,过一会处理老方的事情,处理完后主动给告诉老方
老方的到处理结果
都要实现的接口。
public interface CallBack {
public void result(String result);
}
华哥
public class HuaGe implements CallBack {
@Override
public void result(String result) {
// TODO Auto-generated method stub
}
/**
* 相当于class B 里面的 c方法
*/
public void message(CallBack callback, String msg) {
// TODO Auto-generated method stub
System.out.println("老方问的问题是:"+msg);
/**
* 老方挂掉电话。。。忙自己的事情 去了
*/
busy();
/**
* 华哥在忙自己的事情。。需要很长时间
*/
for(int i=0;i<10000;i++){
}
/**
* 华哥终于把事情干完了 看了下课表,明天是讲项目实战
*/
String result = "明天是讲项目实战";
/**
* 拿起电话告诉老方,明天是讲项目实战课程
*/
callback.result(result);
}
private void busy() {
System.out.println("老方开会中。。。。。");
}
}
老方
public class LaoFang implements CallBack {
private HuaGe huaGe ;
public LaoFang(HuaGe huaGe) {
this.huaGe = huaGe;
}
/**
* 华哥通过这个方法,告诉老方,明天是项目实战课程
* 这个方法就是传说中的回调方法。。。。也就是class A中的D方法
*/
@Override
public void result(String result) {
// TODO Auto-generated method stub
System.out.println("华哥的回答是:"+result);
}
/**
* 老方通过这个方法去问泽华老师
* msg : 明天黑马28期是什么课程
*/
public void ask(final String msg) {
new Thread(){
public void run() {
// 老方调用华哥里面的方法,然后注册回调
huaGe.message(LaoFang.this,msg);
};
}.start();
}
}
测试类
/**
* ============================================================
*
* 版 权 : 黑马程序员教育集团 版权所有 (c) 2014
*
* 作 者 : 马伟奇
*
* 版 本 : 1.0
*
* 创建日期 : 2014-4-28 下午10:51:27
*
* 描 述 :
*
* 经典
* 编码容易,经典不易,且学且珍惜
* 修订历史 :
*
* ============================================================
**/
public class Test {
/****
* LaoFang : 黑马的CEO class A
* HuaGe : android 部门的负责人 class B
*
* 1 老方 :泽华,明天黑马28期是什么课?
* 华哥 :嗯嗯嗯嗯嗯。。。。 哎呀,忘记了。。。。
* 2 老方 :那你看看课表。。。。
* 华哥 :我现在手头比较忙。。一会儿,我忙完了,我在帮你看看。。。。
* 老方 : 好的。。。那我马上有事,需要开会,等你忙完了。在给我打电话吧。。。
* 3 老方 : 挂断电话,去开会,等华哥的电话
* 不挂断电话,一直跟泽华保持通话,直到华哥忙完了,在跟我说话。。。
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
HuaGe huaGe = new HuaGe();
LaoFang laoFang = new LaoFang(huaGe);
laoFang.ask("明天黑马28期是什么课?");
}
}
原文:http://my.oschina.net/u/2356176/blog/421057