Java动态代理

来源:互联网 发布:ubuntu 14.04 镜像源 编辑:程序博客网 时间:2024/05/22 06:44

代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理

 

接口:

public interface Subject {

 abstract public void request(String st);
}

接口实现类:

public class RealSubject implements Subject {

 public void request(String st) {
  System.out.println("dosomething"+st);

 }

}

代理类:

public class DynamicSubject implements InvocationHandler{
 Object sub;
 public DynamicSubject(Object obj){
  this.sub=obj;
 }
 public Object invoke(Object object, Method method, Object[] args) throws Throwable {
  System.out.println("before calling"+args.toString());
  method.invoke(sub, args);
  System.out.println("after calling"+args);
  return null;
 }
}

实现类:

public class Client {

 static public void main(String args[])throws Exception{
  RealSubject rs=new RealSubject();
  InvocationHandler ih=new DynamicSubject(rs);
  Class cl=rs.getClass();
  Subject subject=(Subject)Proxy.newProxyInstance(cl.getClassLoader(),cl.getInterfaces(),ih);
  subject.request("55");
 }
}
 

 

原创粉丝点击