首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

SmartTicket代码阅览笔记(二)

2012-09-19 
SmartTicket代码阅读笔记(二)接昨天的思路继续浅谈RMSCacheHandler的使用,RemoteModelProxy、RemoteModelRe

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的constructorjava 代码
  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......











热点排行