MyInvocationHandler.java 970 B

12345678910111213141516171819202122232425262728293031323334
  1. package com.sf.aop.proxy.jdk;
  2. import java.lang.reflect.InvocationHandler;
  3. import java.lang.reflect.Method;
  4. // 通过jdk提供的代理接口 来动态的创建代理对象
  5. public class MyInvocationHandler<T> implements InvocationHandler {
  6. // 这个类需要支持泛型 对应它的目标对象
  7. private T target;
  8. // 根据目标对象 创建代理对象
  9. public MyInvocationHandler(T target) {
  10. this.target = target;
  11. }
  12. @Override
  13. public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
  14. // method是要执行的方法 args是方法需要的参数
  15. // player.playGame() 转化成反射的写法
  16. this.doBefore();
  17. Object result = method.invoke(target, args);
  18. this.doAfter();
  19. return result;
  20. }
  21. private void doBefore(){
  22. System.out.println("前置处理");
  23. }
  24. private void doAfter(){
  25. System.out.println("后置处理");
  26. }
  27. }