美文网首页
Java中回调机制的使用

Java中回调机制的使用

作者: 江南Ryan | 来源:发表于2018-11-14 21:16 被阅读0次

    1,场景:模拟教师给学生布置作业,学生完成后将结果回告教师
    2,初始化学生类:

    public class Student {
    
        /*
        回调实际上是调用方Teacher将自身的实例teacher(Teacher.this)传递给被调用方Student对应的方法
        doHomeWork(WcsCallBack wcsCallBack, String task)内。
         */
        public void doHomeWork(WcsCallBack wcsCallBack, String task) throws InterruptedException {
    
            System.out.println("接到老师的作业:"+task);
            System.out.println("学生正在做作业");
            Thread.sleep(1000);
            System.out.println("作业已经完成");
            String result="【Today's homeWorker is so easy】";
    
            wcsCallBack.complete("notify Teacher the result of Today's homeWorker"+result);
    
        }
    
    }
    

    3,设置回调方法。(此方法被Student中使用)

    public interface WcsCallBack {
    
        public void complete(String result);
    }
    

    4,初始化Teacher类

    public class Teacher implements WcsCallBack {
    
        private Student student;
    
        public Teacher(Student student) {
            this.student = student;
        }
    
    
        /*
        下发布置作业
         */
        public void commandMethod(String homeWorker ){
            new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("即将布置作业...");
                    try {
                        /*
                        doHomeWork(WcsCallBack wcsCallBack, String task)。
                        Teacher类实现了WcsCallBack接口,所以可以作为WcsCallBack实例传入。
                        /*
                        回调实际上是调用方Teacher将自身的实例teacher(Teacher.this)传递给被调用方Student对应的方法
                        doHomeWork(WcsCallBack wcsCallBack, String task)内。
                         */
    
                        student.doHomeWork(Teacher.this,homeWorker);
    
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                }
            }).start();
    
        }
    
    
    
        @Override
        public void complete(String result) {
            System.out.println("收到学生对于今天作业的反馈:"+result);
        }
    

    5,写测试类:

    public class TestClass {
    
        public static void main(String[] args){
    
            Student stu = new Student();
            Teacher teacher = new Teacher(stu);
            System.out.println("进入测试程序");
            String homeWorker="【万历十五年朗读第三章】";
            teacher.commandMethod(homeWorker);
    
        }
    }
    

    6,结果输出:

    进入测试程序
    即将布置作业...
    接到老师的作业:【万历十五年朗读第三章】
    学生正在做作业
    作业已经完成
    收到学生对于今天作业的反馈:notify Teacher the result of Today's homeWorker【Today's homeWorker is so easy】
    

    相关文章

      网友评论

          本文标题:Java中回调机制的使用

          本文链接:https://www.haomeiwen.com/subject/avssfqtx.html