Java 代理模式应用(2)

public class DynamicProxy<T> {
 public static <T> T newProxyInstance(ClassLoader loader,
   Class<?>[] interfaces, InvocationHandler h) {
  // 寻找joinPoint连接点,AOP框架使用元数据定义
  if (true) {
   // 执行前一个通知
   new BeforeAdvice().exec();
  }
  return (T) Proxy.newProxyInstance(loader, interfaces, h);

}
}

动态代理的场景类

package dynamic;

import java.lang.reflect.InvocationHandler;

public class Client {

/**
  * @param args
  */
 public static void main(String[] args) {
        //定义一个主题
  Subject subject = new RealSubject();
  //定义一个handler
  InvocationHandler handler = new MyInvocationHandler(subject);
  //定义主题的代理
  Subject proxy = DynamicProxy.newProxyInstance(subject.getClass().getClassLoader(), subject.getClass().getInterfaces(), handler);
  //代理的行为,
  proxy.doSomething("Finish");
  proxy.doGirl();
 }

}

Java 代理模式应用

动态代理实际上个人感觉和普通代理没什么区别,实际上的作用就是在不改变代码的情况下增强或控制对象的行为,
 
动态代理实现代理的职责,业务逻辑实现相关的逻辑功能,两者之间没有必然的相互耦合的关系。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/0614beaa47bf83fd66d13fd5c48f55ce.html