浏览 1452 次
锁定老帖子 主题:java动态代理源码
精华帖 (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(); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |