SmartTicket代码阅读笔记(二)

接昨天的思路继续浅谈RMSCacheHandler的使用,RemoteModelProxy、RemoteModelRequestHandle和RemoteModel之间应用了代理模式。其中RemoteModelProxy充当了代理主题角色,RemoteModel是抽象主题角色,而RemoteModelRequestHandle是真实主题角色。
  • 代理模式(Proxy),给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。(参见RemoteModelProxy、RemoteModelRequestHandle和RemoteModel之间关系及UML图)。
在RemoteModelProxy中也就保存了一个对RemoteModelRequestHandle的引用,如下
java 代码
 
  1. private RemoteModelRequestHandler requestHandlerChain;  
  2.    private Preferences preferences = null;  
  3.    private Hashtable movies = new Hashtable();  
  4.   
  5.    public RemoteModelProxy(String serviceURL) throws ApplicationException {  
  6.        requestHandlerChain =   
  7.            new RMSCacheHandler(new HTTPCommunicationHandler(null,   
  8.                serviceURL));  
  9.   
  10.        return;  
  11.    }  
现在小节一下RemoteModelProxy的作用,它是一个代理主题角色,是它控制了RMSCacheHandler以及 HTTPCommunicationHandler。

看看 RMSCacheHandler的constructor
java 代码
  1.      /** 
  2.      * Constructs a new RMSCacheHandler which is to be inserted in a RequestHandler chain. 
  3.      * @param nextHandler The next handler in the chain. 
  4.      * @param progressObserver The progress observer. 
  5.      */  
  6.     public RMSCacheHandler(RemoteModelRequestHandler nextHandler)   
  7.             throws ApplicationException {  
  8.         super(nextHandler);  
  9.   
  10.         rmsAdapter = new RMSAdapter();  
  11.   
  12.         return;  
  13.     } 
注释中提到了RequestHandler chain,责任链模式,恩,继续查资料
  • 责任链模式(Chain of Responsibility),很多对象由每一个对象对其下家的引用而连接起来形成一条链,请求在这个链上传递,直到链上的某一个对象决定处理此请求。
在RemoteModelProxy中有责任链模式典型的应用
java 代码
 
  1. requestHandlerChain =   
  2.             new RMSCacheHandler(new HTTPCommunicationHandler(null,   
  3.                 serviceURL));  
可以看到,RemoteModelProxy创建了两个处理者对象,并指定 RMSCacheHandler的下家是 HTTPCommunicationHandler,而 HTTPCommunicationHandler没有下家,真正起作用处理的是 HTTPCommunicationHandler对象。

 小节:
在这个看似简单的应用中运用了这么多的设计模式,不知道是sun的blueprint这么要求的还是普遍存在这样的设计?
不知道这样的学习方法是否正确,欢迎大家批判:)

to be continued......











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值