每日一得

不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速开发
最近关心的内容:SSH,seam,flex,敏捷,TDD
本站的官方站点是:颠覆软件

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  220 随笔 :: 9 文章 :: 421 评论 :: 0 Trackbacks
key words:  门面与代理

这两组内容没有联系,只是今天在路上的时候突然一下子想到了,就放在一起说说吧

Facade与proxy大多数人应该很熟悉,也接触了不少,但是放在一起比较问他们有什么具体区别的时候好像一下子也说得很含糊。
Facade 意为门面,proxy意为代理,中文的解释也很通俗,但是有时候感觉Facade也有代理的味道,有人认为二者都属于proxy这个大概念,但是问题是他们总得有不同的用途吧,否则发明这两个词岂不是浪费?

google了一些说法,下面这个说法比较到位:

Facade: 用于隐藏调用的复杂性
proxy: 放在服务期端保护被访问的对象

我个人的理解是:
对于客户端掉用来说,Facade是一定可见的,proxy是不可见的 .

    比如,一个报刊亭卖报纸,可能有人民日报,新华日报等多家送报纸给他们的人,但是我们直接到他的店面就可以取到我们想要的报纸,而不是买人民日报的时候到人民日报社去取,以此类推.
    而proxy对我们是隐藏的,比如Jive论坛里的权限验证,我们发帖子的时候客户端是透明访问的,压根实际在服务端后台作了isAdmin和isGuest的判断

    Facade仅仅是提供了你一个方便的 "门面",你可以把它理解为超市,你只要到他那里就可以取到你想要的东西,但是他所调用的后台仍然可以根据策略开放给客户端,比如我们完全可以不去报刊亭买报纸,我们自己去人民日报社去取,但是这种做法显然在如今的现代化潮流下是没什么提倡的,现在更提倡分工.

    对于proxy我们仍有一个误解,比如问你"中介公司是proxy吗?" 请思考一下

    很多人认为中介公司是代理,因为我们生活中有时候就直接称中介公司为代理商或代理公司等,但是此代理非彼代理也!  为什么? 参照我们上面所说的proxy的特征,proxy是隐藏的,难道我们联系代理公司的地址时他会说 : "打一枪换一个地方" 么?  显然不是,恰恰相反,中介公司事实上反而是我们java里的Facade模式,因为它是可见的.

好,关于facade 与proxy就说到这里,应该很清楚了.


posted on 2006-10-10 11:09 Alex 阅读(2031) 评论(3)  编辑  收藏 所属分类: design

评论

# re: 谈谈 Facade与Proxy的联系与区别 2006-10-11 10:09 123bingbing
看新闻这么麻烦,找资料还是去www.mylinux.com.cn
www.mylinux.com.cn网上软件外包流水线,找资料,看新闻,接项目,积分换数码产品  回复  更多评论
  

# re: 谈谈 Facade与Proxy的联系与区别 2009-10-25 10:06 不预则废
谈谈个人的理解:
“Facade:用于隐藏调用的复杂性”
由于是隐藏复杂性,所以在Facade中就可能包含对后端组件、对象的接口访问,比如来自不同Domain的业务组件、跨专题的技术组件等。简单说,是对后端各接口的聚合,目的为了简化。
“Proxy:保护被访问的对象”
实际上就是控制对后端组件或对象的访问,而且是针对特定组件的访问控制。简单说,是对后端某类特定接口的访问代理。  回复  更多评论
  

# re: 谈谈 Facade与Proxy的联系与区别[未登录] 2009-12-29 01:06 路人甲

proxy: 放在服务期端保护被访问的对象

至少有三种proxy,virtual,remote,protect.
this just one of them-for protecting  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: