使用回调实现生活场景:
使用Java回调函数来实现生活以下三种生活场景,小编也是作为小白在学习阶段自己理解的练习题,可能写的不是很清楚,希望大家多多支持和评论呀~
-
张伟在超市买了一瓶快乐水和一些吃的,使用支付 APP 完成支付后,过了几秒,APP 通知他已经支付成功;
-
李雷周一在某某宝 APP 上买了两张周五晚上的电影票。在周五晚上电影即将放映的前 一小时,APP 给他发来了观影通知;
-
韩梅梅周末在家休息,她把衣服丢到洗衣机里之后就去扫地、做饭去了,过了一会,洗 衣机就「嘀~嘀~」响几声通知她衣服已经洗好了
首先创建一个 CallBack(回调)的Interface(接口)
public interface CallBack {
public void renWu(String num);
}
创建一个abstract类App
- abstract(抽象)类App里创建一个abstract WanChengTongZhi()的方法,因为不知道App完成每个任务的时间是否一致,所以定义为抽象的。
public abstract class App {
public abstract void WanChengRenWu(CallBack callBack);
}
创建一个RenWu类继承abstract类App,来实现App里面WanChengRenWu的方法给他设定时间,和CallBack里的反馈信息
public class RenWu extends App{
@Override
public void WanChengRenWu(CallBack callBack) {
// 模拟完成工作的情况。需要消耗一定的时间
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 回调操作,反馈信息
// callBack.tongZhi("支付成功");
// callBack.tongZhi("距离开播还有一小时");
callBack.renWu("叮~叮~衣服洗好了");
}
}
创建三个类:分别是zhangWei、LiLei、HanMeiMei
public class zhangWei implements CallBack {
public void XiaDaReWu(App e){
System.out.println("zhangwei买了一瓶快乐水和一些吃的");
// 将张伟作为对象 使用this参数传递
e.WanChengRenWu(this);
}
@Override
public void renWu(String num) {
System.out.println("支付宝反馈信息:"+num);
}
}
public class LiLei implements CallBack{
public void XiaDaTongZhi(App e){
System.out.println("LiLei买了两张周五晚上的电影票");
// 将李雷作为对象 使用this参数传递
e.WanChengRenWu((CallBack) this);
}
@Override
public void renWu(String num) {
System.out.println("今天晚上电影即将放映:"+ num);
}
}
public class HanMeiMei implements CallBack {
public void XiaDaoRenWu(App e){
System.out.println("HanMeiMei把衣服丢掉洗衣机去了做饭了");
// 将韩梅梅作为对象 使用this参数传递
e.WanChengRenWu(this);
}
@Override
public void renWu(String num) {
System.out.println("洗衣机反馈信息"+num);
}
}
创建一个测试类Test 里面有张伟、李雷、韩梅梅三个对象 和 具体的任务对象 用三个人的类去完成任务
public class Test {
public static void main(String[] args) {
// zhangWei z = new zhangWei();
// RenWu x = new RenWu();
// z.XiaDaTongZhi(x);
// LiLei l = new LiLei();
// RenWu x = new RenWu();
// l.XiaDaTongZhi(x);
HanMeiMei hanMeiMei = new HanMeiMei();
RenWu renWu = new RenWu();
hanMeiMei.XiaDaoRenWu(renWu);
}
}