Skip to content

Instantly share code, notes, and snippets.

@mikeyang01
Created February 23, 2019 13:08
Show Gist options
  • Save mikeyang01/cc88469c54745b07e54f81de4332232c to your computer and use it in GitHub Desktop.
Save mikeyang01/cc88469c54745b07e54f81de4332232c to your computer and use it in GitHub Desktop.
package Callback;
public interface Callback {
void event(String result);
}
public class Callback_Test {
/**
* 回调接口
* 此接口为联系的方式,程序员A必须要实现此接口
* Created by qiudengjiao on 2017/5/27.
*/
class ProgrammerA implements Callback {
//B程序员对象引用
private ProgrammerB programmerB;
//在构造方法中国持有B程序员的引用
public ProgrammerA(ProgrammerB programmerB) {
this.programmerB = programmerB;
}
/**
* 程序员A通过这个方法告诉程序员B任务
*/
public void doEvent(final String event) {
//这里用一个线程就是异步,
new Thread(new Runnable() {
@Override
public void run() {
//程序员A调用程序员B中的方法,在这里注册回调接口
programmerB.doWork(ProgrammerA.this, event);
}
}).start();
}
/**
* 程序员B完成任务后调用此方法告诉A,也就是程序员A的回调方法
*
* @param result
*/
@Override
public void event(String result) {
System.out.println("程序员B告诉程序员A:" + result);
}
}
class ProgrammerB {
public void doWork(Callback callback, String event) {
System.out.println("程序员A告诉程序员B需要干的事:" + event);
System.out.println("程序员B:" + "干活.....");
String result = "完成工作";
//程序员B在这里调用A回调方法,告诉完成任务
callback.event(result);
}
}
private void init() {
ProgrammerB programmerB = new ProgrammerB();
ProgrammerA programmerA = new ProgrammerA(programmerB);
programmerA.doEvent("编写一个列表界面");
}
public static void main(String[] args) {
Callback_Test callback_test = new Callback_Test();
callback_test.init();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment