当前位置: 首页 > news >正文

adapter facade 和 proxy


先小结一下,对于更高层次的挖掘以后补充:

adapter, facade, proxy之所以要一起说,是因为他们都设计对另外一个对象的包装。实际情况中,到不用刻意去使用那种,因为这不是由使用者决定的,而是它们本身的适用场景和当时的上下文决定的。(后一句好像是废话,哪一种设计模式不是呢,与其说是我们选择了设计模式,倒不如说是需求和环境自己的选择)

下面说这3种模式,都是包装,差别究竟有何不同?

Adapter:  针对特定接口对现存类进行包装。
特点:   接口是定死的,意味着你要实现接口的所有功能 。
               现存类在这里是不可修改的。
               一般用于多态的场景,实现接口的子类包装另外一个对象。
关键词: 匹配


facade:  对一组相互协作的类或一个子系统包装成一个简化规范的接口。
特点:   接口不是固定的,是自己定义的,当然原则是应尽量简化
              把子系统要完全隐藏。使用它得人只能看到facade。
              目的在于,“编写一个新的类”的代价远远低于让所有的人都学会使用原有系统。
              典型的逻辑分离。让我们的注意力集中到我们需要化功夫处理的逻辑层而不被其他的逻辑层干扰。(究竟什么逻辑层呢,何以界定高低? 以后写,呵呵)
关键词:简化,分层

proxy:本来先不打算写它,但是facade的分层包装的说法让我想到还有一个proxy,他们区别在何处?
特点:  先说说几种常用的proxy
              远程proxy ,真正的对象在远程机器或远程的地址空间(Web Service ?)
              虚拟代理,真正的对象使用代价过高。比如需要权限验证,耗用资源,或者根本还未创建而现阶段需要使用的对象。
              保护代理,需要对真正的对象提供级别不同的访问
可以看出,这几种代理,简而言之将复杂的使用对象简化了。简化的不是接口方法,而是获取或使用对象的途径。
与facade的区别:facade一般代表一组对象或一个字系统
                              proxy代表单一对象
                              facade自定义接口,proxy 有与被代理对象相同接口
                               facade 简化接口
                                proxy 控制使用对象的使用级别或者使用成本(对于虚拟代理而言)。
关键词:代理

转载于:https://www.cnblogs.com/waitrabbit/archive/2007/07/08/810295.html

相关文章:

  • 好用的在线web页面测试,移动页面测试工具webpagetest使用图文教程
  • 安装 MariaDB
  • dotText源码阅读(4)--DTO和数据访问
  • Java之JDBC学习
  • 上海:法制宣传上公交 移动电视受好评
  • 基于FPGA的XPT2046触摸控制器设计
  • Tomcat漏洞利用
  • jQuery获取select中全部option值
  • Dubbo之旅--集群容错和负载均衡
  • 动态权限树控件
  • 南桥-- 算法训练 2的次幂表示
  • 第九章:XML文档集成---AxInternalBase API
  • 微信登陆
  • 文本相似度计算--余弦定理和广义Jaccard系数
  • 结构型模型Bridge
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • express + mock 让前后台并行开发
  • iOS 系统授权开发
  • JAVA SE 6 GC调优笔记
  • jquery ajax学习笔记
  • magento2项目上线注意事项
  • Mysql5.6主从复制
  • Protobuf3语言指南
  • Python打包系统简单入门
  • React-flux杂记
  • React系列之 Redux 架构模式
  • Vue.js源码(2):初探List Rendering
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 分享一份非常强势的Android面试题
  • 聚簇索引和非聚簇索引
  • 聊聊flink的BlobWriter
  • 微信开放平台全网发布【失败】的几点排查方法
  • 学习Vue.js的五个小例子
  • 阿里云服务器如何修改远程端口?
  • 阿里云移动端播放器高级功能介绍
  • $L^p$ 调和函数恒为零
  • (3)nginx 配置(nginx.conf)
  • (52)只出现一次的数字III
  • (ZT)出版业改革:该死的死,该生的生
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .net core 6 redis操作类
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET NPOI导出Excel详解
  • .NET Remoting学习笔记(三)信道
  • .Net 路由处理厉害了
  • .NET企业级应用架构设计系列之开场白
  • .net生成的类,跨工程调用显示注释
  • .net中的Queue和Stack
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @JSONField或@JsonProperty注解使用
  • []error LNK2001: unresolved external symbol _m
  • [20171102]视图v$session中process字段含义