动态代理 AOP

package com.yyq.clouds.permision;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import org.junit.Test;

 interface Subject{
    public void rent();
    
    public void hello(String str);
 }
 //被代理类
  class RealSubject implements Subject
 {
     @Override
     public void rent()
     {
         System.out.println("I want to rent my house");
     }
     
     @Override
     public void hello(String str)
     {
         System.out.println("hello: " + str);
     }
 }
 
  class DynamicProxy  implements InvocationHandler{
    private Object subject;
    public DynamicProxy(Object subject){
       this.subject = subject;
   }
 @Override
  public Object invoke(Object proxy, Method method, Object[] args)
  throws Throwable {
      Authority authority = new Authority();
    //执行权限对象中的in方法
   authority.first();
   Object result = method.invoke(subject, args);
  authority.last();

   return result;
}


}
  class Authority {
   //第一个拦截方法
       public void first() {
              System.out.println("------第一个切面方法------");
    }
    //第二个拦截方法
     public void last() {
         System.out.println("------最后一个切面方法------");
   }
}


   public  class ProxyTest {
  public  Object getProxy(Object target) throws Exception {
//创建一个MyInvocationHandler对象
DynamicProxy handler = new DynamicProxy(target);

//创建并返回一个动态代理
   return Proxy.newProxyInstance(target.getClass().getClassLoader(),
      target.getClass().getInterfaces(), handler);
 }
  public static void main(String[] args) {
  try {
Subject realSubject = new RealSubject();
ProxyTest myProxyFactory=new ProxyTest();
Subject subject = (Subject)myProxyFactory.getProxy(realSubject);
subject.rent();
subject.hello("world");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  }

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值