原理图:
代码
//首先是接口部分:
package mechanism;
public interface ICallBack {
public abstract void doSomething();
}
package mechanism; public interface ICallee { public abstract String askforCallback(); public abstract void setCallback(ICallBack callback); }
//然后是实现部分:
package mechanism; public class CallBack implements ICallBack{ @Override public void doSomething() { System.out.println("do something useful in callback"); } }
package mechanism; public class Callee1 implements ICallee { private ICallBack callback; @Override public void setCallback(ICallBack callback) { this.callback = callback; } @Override public String askforCallback() { System.out.println("pre operations before invoke callback"); callback.doSomething(); System.out.println("post operations after invoke callback"); String result = "function execute success, ruturn result"; return result; } }
package mechanism; public class Caller { private ICallee callee; public void setCallee(ICallee callee) { this.callee = callee; } public void bindCallBacktoCallee(ICallBack callback) { callee.setCallback(callback); } public void executeTask() { System.out.println("pre task analysis"); System.out.println("doing part of task"); //excute one function String result = callee.askforCallback(); System.out.println("post operation as respond to callee's result"); System.out.println("complete the task"); } }
//测试:package mechanism; public class Test { public static void main(String[] args) { System.out.println("main flow : some operations before using Caller"); ICallee callee1 = new Callee1(); //由Caller完成Callback与Callee的绑定,从而将Callback的执行 //委托给Callee //先分配资源 Caller caller = new Caller(); ICallBack callback = new CallBack(); //再完成配置工作 caller.setCallee(callee1); caller.bindCallBacktoCallee(callback); //然后就可以运行了 caller.executeTask(); } }