package net.kuisec;
/**
* 运行主类
* 主线程
* 主线程中将使用两种常用对象,已经做区分
* @author Jinsn
*
*/
public class Demo {
public static void main(String[] args) {
//创建DelayCall对象来使用回调
DelayCall call = new DelayCall();
System.out.println("接口实现类运行方式启动:");
//使用多态来展现接口灵活性,编译看左边,运行看右边。
CallBack callBack = new InterImp();
//传入数据开始模拟
call.dataProcessing("10086(接口实现类)", callBack);
//换行分隔
System.out.println();
System.out.println("匿名内部类运行方式启动:");
//换行分隔
System.out.println();
//使用多态来得到匿名内部类对象
CallBack callBack2 = new CallBack() {
@Override
public void callBack() {
// TODO Auto-generated method stub
System.out.println("匿名内部类被调用,回调生效");
System.out.println("匿名内部类运行方式结束");
//换行分隔
System.out.println();
}
};
//传入数据开始模拟
call.dataProcessing("10000(匿名内部类)", callBack2);
}
}
/**
* 模拟一个耗时处理
* @author Jinsn
*
*/
class DelayCall{
/**
* 开启子线程模拟一个耗时 *** 作
* @param data 得到消息,模拟数据传入
* @param callback 得到回调对象,当数据处理完毕之后调用回调对象中的回调方法
*/
public void dataProcessing(String data, CallBack callback){
new Thread(new Runnable() {
public void run() {
try {
//模拟子线程耗时数据处理
System.out.println("得到的data:" + data);
System.out.println("耗时处理3秒");
//换行分隔
System.out.println();
Thread.sleep(3000);
System.out.println("耗时处理结束");
//运行结束,回调
callback.callBack();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
/**
* 创建回调接口
* 主要功能是能利用多态灵活性得到回调对象
* 假设回调对象是匿名内部类,可以省去频繁创建类对象
* @author Jinsn
*
*/
interface CallBack{
void callBack();
}
/**
* 定义一个接口实现类
* 这样的实现类实际运用过程中多以匿名内部类方式出现
* @author Jinsn
*
*/
class InterImp implements CallBack{
@Override
public void callBack() {
// TODO Auto-generated method stub
System.out.println("接口实现类被调用,回调生效");
System.out.println("接口实现类运行方式结束");
//换行分隔
System.out.println();
}
}
希望能帮助到你。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)