据我了解,适配器和代理模式都使两个不同/不同的类/对象相互兼容以进行通信。它们都是结构模式。我得到他们两个彼此非常相似。
有人能解释一下究竟是什么让它们不同吗?
编辑:我经历了这个问题。但我宁愿在适配器和代理之间进行仔细比较。
据我了解,适配器和代理模式都使两个不同/不同的类/对象相互兼容以进行通信。它们都是结构模式。我得到他们两个彼此非常相似。
有人能解释一下究竟是什么让它们不同吗?
编辑:我经历了这个问题。但我宁愿在适配器和代理之间进行仔细比较。
适配器:
UML图:
您可以在这篇 SE 帖子中通过工作代码示例找到有关此模式的更多详细信息:
代理人:
代理为另一个对象提供代理或占位符以控制对其的访问。
UML图:
代理模式适用的常见情况。
对于工作代码,请查看关于 Proxy的教程点文章。
主要区别:
您可以在代理和适配器文章的来源制作文章中找到有关这些模式的更多详细信息。
其他有用的文章:dzone代理
从这里:
适配器为其主题提供了不同的接口。代理提供相同的接口。
您可能会认为适配器应该使一个东西适合另一个如果直接连接则不兼容的东西。例如,当您出国旅行并需要电源插座适配器时。
现在 Proxy 是相同接口的对象,并且可能是相同的基类(或子类)。它只是“假装”成为(并且表现得像)实际对象,而是将实际行为(计算、处理、数据访问等)转发给底层的引用对象。
外推到电气类比,客户端可以看到适配器的使用——也就是说,客户端“知道”正在使用适配器——而代理的使用可能更经常被隐藏,或者“透明的”——客户端认为正在使用一个实际的对象,但它只是一个代理。
适配器模式和代理模式的区别
适配器模式
代理模式
通过代码理解
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(){}
}