这几天在写一些业务的时候,发现有多个重复的可抽象复用的代码块,但是由于代码块中间是远程调用代码,导致普通使用反射进行方法运行的方式无法实现,于是学习了一种回调写法
回调类
public class CallBack(){
public static <T> Object doProcess(DirectCrossCallBack<T> callback) {
process = callback.process();
return process;
}
}
定义接口
public interface DirectCrossCallBack<T> {
T process();
}
使用方式:
例如下面的这段方法
public interface Action(){
void said();
}
public class ActionImpl implements Action(){
@Override
public void said(){
...
}
}
调用:
CallBack.doProcess(()->action.said());
这样做的好处是,实际上方法执行是在callback.process()
处执行的,这样可以在doProcess
中放入一些重复的业务代码或者try catch
异常处理,这样能大量减少冗余业务代码