论坛首页 Java企业应用论坛

动态代理

浏览 1020 次
锁定老帖子 主题:动态代理
该帖已经被评为隐藏帖
作者 正文
   发表时间:2008-04-13  
OO
注:下面的想法,是自己在看的时候一些疑问! 如对代码由 疑义 请看原贴![url] http://www.iteye.com/topic/32065 [/url] [size=large]/** *动态代理的好处就是当 顶层接口改变的时候,其Handler不会改变, *Proxy返回的类就可以直接调用增加的方法 *而静态类需要更改实现类,才能调用新增加的方法。 */ 接口: public interface IBusiness { public void doBusiness(); public void doOtherBusiness();// 增加的方法! } 静态: public class BusinessProxy implements IBusiness { BusinessImpl bi = null; public BusinessProxy(BusinessImpl bi) { this.bi = bi; } public void doBusiness() { # System.out.println("事务、日志、权限等操作"); bi.doBusiness(); # System.out.println("事务、日志、权限等操作"); } @Override public void doOtherBusiness() { # System.out.println("事务、日志、权限等操作"); bi.doOtherBusiness(); # System.out.println("事务、日志、权限等操作"); }//System.out.println("事务、日志、权限等操作"); :shock: 又写了两遍! :shock: } public void main(String[] args){... ... Proxy.doOtherBusiness();} 动态: 用InvocationHandler的好处就是 :o 无论执行哪个方法,都要到它所实现的invoke方法中,执行一次, :o 对于像上面标有 " # " 号的行,就只用 写一次。 public static void main(String[] args) { BusinessImpl bi = new BusinessImpl(); IBusiness proxy = (IBusiness) Proxy.newProxyInstance(bi.getClass().getClassLoader(), bi.getClass().getInterfaces(),new BusinessHandler(bi)); proxy.doBusiness(); proxy.doOtherBusiness(); }[/size]
论坛首页 Java企业应用版

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