适配器和代理模式之间的确切区别是什么?

Sup*_*hne 10 oop design-patterns adapter object-oriented-analysis proxy-pattern

据我所知,适配器代理模式使两个不同/不同的类/对象与每个相互兼容以进行通信.它们都是结构模式.我发现他们两个都非常相似.

有人可以解释究竟是什么让他们与众不同?

编辑:我经历了这个问题.但我更愿意在Adapter和Proxy之间进行密切的比较.

Rav*_*abu 13

适配器:

  1. 它允许两个不相关的接口通过不同的对象一起工作,可能扮演相同的角色.
  2. 它修改了原始界面.

UML图:

在此输入图像描述

您可以通过此SE帖子中的工作代码示例找到有关此模式的更多详细信息:

桥模式和适配器模式之间的差异

代理:

代理为另一个对象提供代理或占位符以控制对它的访问.

UML图:

在此输入图像描述

存在代理模式适用的常见情况.

  1. 一个虚拟代理是"昂贵打造"对象的占位符.仅在客户端首次请求/访问对象时才创建真实对象.
  2. 远程代理提供了驻留在不同的地址空间中的对象的本地代表.这就是RPC和CORBA中提供的"存根"代码.
  3. 保护代理控制对一个敏感主对象."代理"对象在转发请求之前检查调用者是否具有所需的访问权限.
  4. 一个智能代理提供了完善的访问某些物体,如跟踪引用的数量到一个对象,拒绝访问,如果达到一定的数量,以及加载从数据库中的对象插入需存储器

有关工作代码,请查看有关Proxy的tutorialspoint文章.

主要差异:

  1. 适配器为其主题提供不同的界面.代理提供相同的接口
  2. 适配器旨在更改现有对象的接口

您可以在代理适配器文章的sourcemaking文章中找到有关这些模式的更多详细信息.

其他有用的文章:dzone 代理


hel*_*ker 10

这里

适配器为其主题提供不同的接口。Proxy 提供相同的接口。

您可能会认为适配器是一种可以使一个事物适合另一个事物的东西,而如果直接连接,则该事物是不兼容的。例如,当您出国旅行时,需要电源插座适配器。

现在,代理是同一接口的对象,并且可能是同一基类(或子类)。它只是“假装”为(并且表现得像)实际对象,而是将实际行为(计算、处理、数据访问等)转发给底层的引用对象。

推断到电气类比,适配器的使用对客户端可见 - 也就是说,客户端“知道”正在使用适配器 - 而代理的使用可能更经常被隐藏,或者“透明”——客户端认为正在使用一个实际的对象,但它只是一个代理。