谈谈 Facade与Proxy的联系与区别
2006-11-24 23:37
260 查看
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就说到这里,应该很清楚了.
这两组内容没有联系,只是今天在路上的时候突然一下子想到了,就放在一起说说吧
Facade与proxy大多数人应该很熟悉,也接触了不少,但是放在一起比较问他们有什么具体区别的时候好像一下子也说得很含糊。
Facade 意为门面,proxy意为代理,中文的解释也很通俗,但是有时候感觉Facade也有代理的味道,有人认为二者都属于proxy这个大概念,但是问题是他们总得有不同的用途吧,否则发明这两个词岂不是浪费?
google了一些说法,下面这个说法比较到位:
Facade: 用于隐藏调用的复杂性
proxy: 放在服务期端保护被访问的对象
我个人的理解是:
对于客户端调用来说,Facade是一定可见的,proxy是不可见的 .
比如,一个报刊亭卖报纸,可能有人民日报,新华日报等多家送报纸给他们的人,但是我们直接到他的店面就可以取到我们想要的报纸,而不是买人民日报的时候到人民日报社去取,以此类推.
而proxy对我们是隐藏的,比如Jive论坛里的权限验证,我们发帖子的时候客户端是透明访问的,压根实际在服务端后台作了isAdmin和isGuest的判断
Facade仅仅是提供了你一个方便的 "门面",你可以把它理解为超市,你只要到他那里就可以取到你想要的东西,但是他所调用的后台仍然可以根据策略开放给客户端,比如我们完全可以不去报刊亭买报纸,我们自己去人民日报社去取,但是这种做法显然在如今的现代化潮流下是没什么提倡的,现在更提倡分工.
对于proxy我们仍有一个误解,比如问你"中介公司是proxy吗?" 请思考一下
很多人认为中介公司是代理,因为我们生活中有时候就直接称中介公司为代理商或代理公司等,但是此代理非彼代理也! 为什么? 参照我们上面所说的proxy的特征,proxy是隐藏的,难道我们联系代理公司的地址时他会说 : "打一枪换一个地方" 么? 显然不是,恰恰相反,中介公司事实上反而是我们java里的Facade模式,因为它是可见的.
好,关于facade 与proxy就说到这里,应该很清楚了.
相关文章推荐
- 谈谈字符编码间的区别与联系
- 简单谈谈JVM、JRE和JDK的区别与联系
- 装饰模式(Decorator)与代理模式(Proxy)的区别与联系
- 谈谈分布式Session的几种实现方式,Session和Cookie的区别和联系以及Session的实现原理
- Proxy与Agent的内在联系与区别
- 谈谈vue.js中methods watch和compute的区别和联系
- 谈谈分布式Session的几种实现方式,Session和Cookie的区别和联系以及Session的实现原理
- 谈谈VUE种methods watch和compute的区别和联系
- Facade模式及其与Adapter模式和Proxy模式的区别
- Facade与Proxy的区别
- session和cookie的区别与联系
- java提高篇——内部类和外部类的区别与联系
- handler.post和handler.sendMessage的区别和联系
- ArrayList,Vector,HashMap,HashSet,HashTable之间的区别与联系
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- Android Theme和Style区别联系
- 组件 插件 控件联系与区别
- 可重入函数 与线程安全的区别与联系
- Java 学习笔记 04 String 、StringBuilder 和 StringBuffer区别和联系
- 详解c++ 引用(reference)与 指针(pointer)的区别与联系