论坛首页 Java企业应用论坛

java动态代理源码

浏览 1452 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-05-09   最后修改:2011-05-09
package test;

public interface IUser {

	public abstract void select(String id);
	
	public void delete();

}

 

package test;

public class UserImpl implements IUser {

	/* (non-Javadoc)
	 * @see test.IUser#select(java.lang.String)
	 */
	@Override
	public void select(String id)
	{
		System.out.println("查询");
	}
	
	@Override
	public void delete()
	{
		System.out.println("删除");
	}
	
}

 

package test;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class LogHandler implements InvocationHandler {

	private Object obj;
	private String text;
	
	public Object newProxy(Object obj,String text){
		this.obj=obj;
		this.text=text;
		return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces() , this);
	}
	
	
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		log();
		Object obj=method.invoke(this.obj, args);
		return obj;
	}
	
	public void log()
	{
		System.out.println(text+"添加操作日志");
	}

}

 

package test;


public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		IUser iUser=(IUser)new LogHandler().newProxy(new UserImpl(), "1");
		iUser.select("1");
		iUser.delete();
	}	

}

 

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics