首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代理模式和适配器模式的区别?

代理模式和适配器模式的区别?
EN

Stack Overflow用户
提问于 2010-09-22 14:18:08
回答 2查看 6.1K关注 0票数 5

Proxy和Adapter模式似乎有相似之处?

谁能解释一下有什么不同?为什么我们两个都需要呢?在哪些问题中,我们应该只使用代理,而不是通过.net示例使用另一个代理?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2010-09-22 16:17:42

代理所公开的行为与其隐藏的对象完全相同。代理通常用于联系远程对象,而不必知道如何联系它。WCF服务就是一个例子,您可以将访问服务封装在一个代理中,该代理公开与wcf服务完全相同的接口,但会隐藏实现细节,如使用can工厂和处理faultexceptions等。这就像你的客户端正在与本地的WCF服务对话。

适配器也会隐藏底层对象,但它会将与之交换的数据转换为底层对象使用的正确格式和内容。一个例子确实是一个遗留系统,就像Goblin说的那样。您将与遗留系统对话的复杂性封装到适配器中,以便向客户端提供与遗留系统对话的简单方法(可能它使用了chatty或CRUDy应用程序接口,您希望将其隐藏在粗粒度操作之后)。

至少我是这么理解的。

编辑:顺便说一句,我个人觉得你不必把设计模式名称看作是最终的全部。根据您想要实现的目标选择正确的模式,并将其命名为您想要的任何名称。

票数 16
EN

Stack Overflow用户

发布于 2010-09-22 15:23:01

代理通常用于以下场景:

  • 底层的“真实”对象的创建成本很高。然后让代理在创建时成为占位符(下载巨大图像时的进度条图标就是一个典型的例子)。延迟加载是另一个典型的例子。我们的想法是,我们不知道用户是否会单击“详细信息”窗格-因此,我们将推迟加载,直到他实际单击它或系统空闲。
  • 您想要控制对代理中“真实”对象的部分或所有成员的访问(SecurityProxy)。

适配器扮演着另一个角色--它们在两个没有关系的类之间架起了桥梁。Adaptor可以同时充当这两个对象。这主要用于必须与遗留系统(或第三方框架)集成的情况下,其中不可能更改API。

希望这能有所帮助!

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3766764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档