使用java回调函数来实现常见的生活场景

使用回调实现生活场景:

使用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);
    }
}
上一篇:Oracle数据库中GROUP BY 和 ORDER BY 一起使用需要注意的事项


下一篇:Python操作MySQL数据库的三种方法