原创作者: dodoflying
阅读:881次
评论:0条
更新时间:2011-05-26
接昨天的思路继续浅谈RMSCacheHandler的使用,RemoteModelProxy、RemoteModelRequestHandle和RemoteModel之间应用了代理模式。其中RemoteModelProxy充当了代理主题角色,RemoteModel是抽象主题角色,而RemoteModelRequestHandle是真实主题角色。
现在小节一下RemoteModelProxy的作用,它是一个代理主题角色,是它控制了RMSCacheHandler以及
HTTPCommunicationHandler。
看看RMSCacheHandler的constructor
注释中提到了RequestHandler chain,责任链模式,恩,继续查资料
可以看到,RemoteModelProxy创建了两个处理者对象,并指定
RMSCacheHandler的下家是HTTPCommunicationHandler,而HTTPCommunicationHandler没有下家,真正起作用处理的是HTTPCommunicationHandler对象。
小节:
在这个看似简单的应用中运用了这么多的设计模式,不知道是sun的blueprint这么要求的还是普遍存在这样的设计?
不知道这样的学习方法是否正确,欢迎大家批判:)
to be continued......
- 代理模式(Proxy),给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。(参见RemoteModelProxy、RemoteModelRequestHandle和RemoteModel之间关系及UML图)。
java 代码
- private RemoteModelRequestHandler requestHandlerChain;
- private Preferences preferences = null;
- private Hashtable movies = new Hashtable();
- public RemoteModelProxy(String serviceURL) throws ApplicationException {
- requestHandlerChain =
- new RMSCacheHandler(new HTTPCommunicationHandler(null,
- serviceURL));
- return;
- }
看看RMSCacheHandler的constructor
java 代码
- /**
- * Constructs a new RMSCacheHandler which is to be inserted in a RequestHandler chain.
- * @param nextHandler The next handler in the chain.
- * @param progressObserver The progress observer.
- */
- public RMSCacheHandler(RemoteModelRequestHandler nextHandler)
- throws ApplicationException {
- super(nextHandler);
- rmsAdapter = new RMSAdapter();
- return;
- }
- 责任链模式(Chain of Responsibility),很多对象由每一个对象对其下家的引用而连接起来形成一条链,请求在这个链上传递,直到链上的某一个对象决定处理此请求。
java 代码
- requestHandlerChain =
- new RMSCacheHandler(new HTTPCommunicationHandler(null,
- serviceURL));
小节:
在这个看似简单的应用中运用了这么多的设计模式,不知道是sun的blueprint这么要求的还是普遍存在这样的设计?
不知道这样的学习方法是否正确,欢迎大家批判:)
to be continued......
评论 共 0 条 请登录后发表评论