5

据我所知,适配器代理模式使两个不同/不同的类/对象与每个通信兼容。并且它们都是结构模式。我觉得他们两个都很相似。适配器和代理模式之间的确切区别是什么?

有人可以解释究竟是什么使他们不同吗?编号: 我经历了this的问题。但我宁愿在适配器和代理之间进行仔细的比较。

+2

的可能的复制(HTTP://计算器。 com/questions/350404/how-do-the-proxy-decorator-adaptor-and-bridge-patterns-different) –

+0

@michael_j_ward我已经经历过了,但我宁愿需要对这两者进行仔细比较。 。 –

回答

10

适配器:

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

UML图:

enter image description here

您可以找到有关这种模式有工作的代码示例在这个SE发布更多细节:

Difference between Bridge pattern and Adapter pattern

代理:

代理为另一个对象提供代理或占位符来控制对其的访问。

UML图:

enter image description here

存在其中代理模式是适用的常见情况。

  1. A 虚拟代理是“昂贵创建”对象的占位符。真正的对象仅在客户端首次请求/访问对象时创建。
  2. A 远程代理为驻留在不同地址空间的对象提供本地代理。这是RPC和CORBA提供的“存根”代码。
  3. A 保护代理控制对敏感主对象的访问。 “代理”对象在转发请求之前检查调用者是否具有所需的访问权限。
  4. 智能代理提供复杂的访问某些物体,如追踪引用的数目为一个对象和拒绝访问如果达到一定数量时,以及从数据库加载对象到内存需求

有关工作代码,请参阅代理上的tutorialspoint文章。

主要差异:

  1. 适配器提供不同的接口到其主题。代理提供相同的接口
  2. 适配器意味着改变现有对象

您可以在proxyadapter文章sourcemaking文章中找到有关这些模式的更多细节的接口。

其它有用的制品:proxy由dzone

+0

非常感谢您为改善您的答案努力再次:) –

+0

我完成了我的编辑:) –

2

here

适配器提供不同的接口到其主题。代理提供相同的界面。

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

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

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

0

适配器模式与代理模式

适配器模式

  1. 印度移动充电器(CLIENT)之间的差不适合在美国开关板(服务器)。
  2. 您需要使用适配器,以便印度移动充电器(CLIENT)可以安装在美国开关板(SERVER)中。
  3. 从第2点开始,您可以理解CLIENT直接联系适配器。然后适配器联系服务器

代理模式

  • 在适配器模式客户端直接接触适配器。它不联系服务器。
  • 在代理模式中,代理和服务器实现相同的接口。客户端会调用相同的接口。

认识经历CODE

class client{ 
    public void main(){ 
     //proxy pattern 
     IServer iserver = new proxy(); 
     iserver.invoke(); 

     //adapter pattern 
     IAdapter iadapter = new adapter(); 
     iserver.iadapter(); 
    } 
} 

class server implements IServer{ 
    public void invoke(){} 
} 

class proxy implments IServer{ 
    public void invoke(){} 
} 

class adapter implements IAdapter{ 
    public void invoke(){} 
} 

参考文献:[?如何做代理,装饰,适配器,和桥模式不同] Difference between Adapter pattern and Proxy Pattern

相关问题