Created
February 23, 2019 13:08
-
-
Save mikeyang01/cc88469c54745b07e54f81de4332232c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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