作为一个初来乍到的Android学者,平时用到接口回调都不是很熟悉。今天学习理解了下,自己敲了个形象的demo,来加深一下印象。希望对初学者有些帮助。大神的,还请多多评论,指教。说说回调的好处,或者其他的。
/**
* 测试接口回调的类
* @author Changel
*
*/
public class TestInterface {
public static void main(String[] args) throws Exception {
// 出现坏人
BadBoy bb = new BadBoy();
// 坏人安置炸弹
Bomb bomb = bb.setBomb();
// 坏人启动炸弹
bb.onStarBomb(bomb,12);
// 就在11秒后
Thread.sleep(11000);
// 警察出现
Police police = new Police();
// 警察输入密码进行拆除
police.removeBomp(bomb, 123456);
}
}
/**
* @author Changel
* 这是一个模拟炸弹类
*/
public class Bomb implements BadBoy.StartBomb ,Police.StopBomp{
int time;
/* 启动炸弹开始计时 */
@Override
public void onStartBomb(final int count) {
// TODO Auto-generated method stub
this.time = count;
// 启动一个线程模拟爆炸倒计时
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (time > 0) {
try {
System.out.println("Time:" + time);
time--;
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 计时结束自动爆炸
if(time == 0){
System.out.println("炸弹爆炸!!!!!!!");
}else // 炸弹被成功拆除
System.out.println("拆除成功!!!!!!!");
}
}).start();
}
/* 拆除炸弹 */
@Override
public void onStopBomp(long password) {
// TODO Auto-generated method stub
if(password == 123456)
time = -1;
}
}
/**
* 模拟坏人的类
* @author changel
*/
public class BadBoy {
/**
* 安置炸弹的方法
* @return
*/
public Bomb setBomb(){
return new Bomb();
}
/**
* 启动炸弹
* @param startBomb
* @param time
*/
public void onStarBomb(StartBomb startBomb,int time){
startBomb.onStartBomb(12);
}
/**
* @author Changel
* 定义一个炸弹启动的接口
*/
public interface StartBomb{
void onStartBomb(final int count);
}
}
/**
* @author changel
* 模拟警察的类
*/
public class Police {
/**
* 拆除炸弹的方法
* @param bomb
* @param password
*/
public void removeBomp(StopBomp bomb,long password){
bomb.onStopBomp(password);
}
/**
* @author caicy
* 定义一个停止炸弹的接口
*/
public interface StopBomp{
void onStopBomp(long password);
}
}
有任何问题或者指教,请评论。我会及时回复;谢谢