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】
网友评论