zoukankan      html  css  js  c++  java
  • java动态代理Dynamic Proxy

    1.被代理对象的接口:

    package test.dynamicproxy;
    
    public interface TargetInterface {
    	public void SayHello();
    	public int sum(int a ,int b);
    }
    
    

    2.被代理的对象:

    package test.dynamicproxy;
    
    public class Target implements TargetInterface {
    
    	public void SayHello(){
    		System.out.println("Hello");
    	}
    	public int sum(int a, int b) {
    		return a+b;
    	}
    }
    
    

    3.InvocationHandler包装:

    package test.dynamicproxy;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    
    public class TargetInvocationHandler implements InvocationHandler {
    
    	private Object object;
    	public TargetInvocationHandler(Object obj){
    		this.object=obj;
    	}
    	
    	public Object invoke(Object proxy, Method method, Object[] args2)
    	throws Throwable
    	{
    		doBefore();
    		Object result = method.invoke(object, args2);
    		doAfter();
    		return result;
    	}
    
    	public void doBefore(){
    		System.out.println("do before");
    	}
    
    	public void doAfter(){
    		System.out.println("do after");
    	}
    }
    
    

    4.测试类:

    package test.dynamicproxy;
    
    import java.lang.reflect.Proxy;
    
    public class TestDynamicProxy {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		Target t=new Target();
    		TargetInvocationHandler handler=new TargetInvocationHandler(t);
    		
    		TargetInterface proxy = (TargetInterface) Proxy.newProxyInstance(
    				t.getClass().getClassLoader(),
    				t.getClass().getInterfaces(),
    				handler);
    				
    		proxy.SayHello();
    
    		int b=proxy.sum(10, 20);
    		System.out.println(b);
    	}
    
    }
    
    

  • 相关阅读:
    磁盘相关命令
    shell $用法
    setuid setgid stick bit 特殊权限 粘滞位
    运维面试题2
    mysql 外键约束
    创建MySQL 用户
    shell 脚本定时创建月份表
    apache 配置多个虚拟主机,不同的端口
    sublime3中文乱码解决包ConvertToUTF8.zip
    yii2安装
  • 原文地址:https://www.cnblogs.com/wucg/p/1890377.html
Copyright © 2011-2022 走看看