任务接口
public interface ITaskClass {
/**
* 当前任务执行方法
*
* @param taskId
* @return 任务执行情况
*/
public String execute(String taskId);
}
实现类
public class TaskClass implements ITaskClass {
/**
* {@inheritDoc}
*/
@Override
public String execute(String taskId) {
System.out.println("正在执行任务:" + taskId);
return "success";
}
}
代理类
public class ProxyTask implements InvocationHandler {
private Object delegate;
public Object bind(Object delegate) {
this.delegate = delegate;
return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
delegate.getClass().getInterfaces(), this);
}
/**
* {@inheritDoc}
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("执行前");
Object object = method.invoke(delegate, args);
System.out.println("执行之后" + object.toString());
return object;
}
}
测试类:
public class Test {
public static void main(String[] args) {
ITaskClass tc = (ITaskClass) new ProxyTask().bind(new TaskClass());
tc.execute("199");
}
}
执行前
正在执行任务:199
执行之后success