一切皆来源于生活而高于生活

[ 1035 查看 / 0 回复 ]

我们耳熟能详的是,艺术来源于生活而高于生活。在软件领域,则是 设计来源于生活而高于生活。

一直没有深入理解 代理 模式与其他几个模式之间的区别。早晨在公车上突发奇想,也不知道是否正确,先抓紧记录下来再说。

我们到电脑城去逛,要买一台笔记本。跟小谢一样,我也认准了HP这个品牌,至于具体哪个型号则暂时不确定。在电脑城中,我找到的肯定是 HP 的代理(可以是多级代理),代理开设在电脑城中——比较靠近我居住地,而HP总部为 被代理对象 可能在北京或者其他什么地方(我并不关心)。HP代理在真正取出 HP笔记本 卖我之前肯定要做一些事情(所谓无奸不商——btw,GOOGLE输入法没有把这个词语收录——我们认为作为代理收取一定的费用,甚至是适当的忽悠只要在正常的范围内,是可以被接受的),比如要推荐一些型号(总是推荐他认为 获利丰厚 的,这也无可厚非);用代码表现的话,应该是下面的第3,4行。

而当我确定要购买的型号之后,代理就取来 HP电脑——调用真正的被代理对象身上的方法(惠普公司卖电脑,这是 被代理对象)。用代码表示,类似下面的第6行。

最后,代理商肯定要帮我再做一些推荐,比如搞个 无线鼠标、鼠标殿、屏保、或者键盘膜什么的,类似下面的第8、9行代码。
  1. public String intercept(ActionInvocation invocation) throws Exception
  2. {
  3. //Pre processing
  4. logMessage(invocation, START_MESSAGE);

  5. String result = invocation.invoke();

  6. //Post processing
  7. logMessage(invocation, FINISH_MESSAGE);

  8. return result;
  9. }
复制代码
代理对象()刚好在昨天听张老师讲解 Web Service的时候也用到。

总之,代理模式的使用是因为 直接访问对象 比较困难(webService就比较困难,且ajax只能访问本域内的webService,想要跨域访问——那就更困难几乎不可实现,则必须为webService本身找一个本地的代理)的时候,在 客户端与被访问对象之间架起一个代理(桥梁),把所有麻烦的事情都扔给 代理 去做(vs的开发环境为我们生成webService的时候就做了许多这样的‘苦活累活’),而对客户端来说,则不用去经历这样的‘痛苦’——面临复杂的结构甚至是像ajax-->webService这样的天堑;亦即 把困难留给自己(类的 设计者)而把幸福带给别人(客户端,类的使用者——webService好像叫消费者,所谓的‘上帝’),这样就 封装 了变化,达到了设计的最高境界。
最后编辑shenyoujia 最后编辑于 2010-01-04 10:05:53
1

评分次数

    TOP