快速业务通道

Java动态代理机制分析及扩展,第2部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
1-06-21 IBM / 王忠平 何平

接着,我们将通过购票者类 TicketBuyer 来模拟购票以演示扩展动态代理机 制。

清单 20. TicketBuyer

public class TicketBuyer {    public static void main(String[] args)    {      // 创建真正的TickerSeller对象,作为stub实体      final TicketSeller stub = new Expo2010TicketSeller ();      // 创建扩展调用处理器对象      InvocationHandler handler = new InvocationHandlerEx()      {        public Object getStub(Class stubClass)        {          // 仅对可接受的Class类型返回stub实体          if( stubClass.isAssignableFrom(stub.getClass())  )          {            return stub;          }          return null;        }        public Object invoke(Object proxy, Method method,  Object[] args)        throws Throwable        {          Object o;          try          {            System.out.println("  >>> Enter  method: "       + method.getName() );            o = method.invoke(stub, args);          }          catch(InvocationTargetException e)          {            throw e.getCause();          }          finally          {            System.out.println("  <<< Exit  method: "       + method.getName() );          }          return o;        }      };      // 通过ProxyEx构造动态代理      TicketSeller seller = (TicketSeller) ProxyEx.newProxyInstance(           TicketBuyer.class.getClassLoader(),          new Class[] {TicketSeller.class},          handler);      // 显示代理类的类型      System.out.println("Ticket Seller Class: " +  seller.getClass() + "\n");      // 直接访问theme变量,验证代理类变量在对象构造时同步的有效 性      System.out.println("Ticket Theme: " + seller.theme +  "\n");      // 函数访问price信息       System.out.println("Query Ticket Price...");      System.out.println("Ticket Price: " +  seller.getTicketPrice() + " RMB\n");      // 模拟票务交易       buyTicket(seller, 1, 200);      buyTicket(seller, 1, 160);      buyTicket(seller, 250, 30000);      // 直接更新theme变量       System.out.println("Updating Ticket Theme...\n");      seller.theme = "World Expo 2010 in Shanghai";      // 函数访问theme信息,验证扩展动态代理机制对变量同步的有效 性      System.out.println("Query Updated Ticket Theme...");      System.out.println("Updated Ticket Theme: " +  seller.getTicketTheme() + "\n");    }    // 购票函数    protected static void buyTicket(TicketSeller seller, int  ticketNumber, int 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号