[英]What is the exact difference between 'Adapter' and 'Mediator" patterns?
[英]What is the exact difference between Adapter and Proxy patterns?
据我了解,适配器和代理模式都使两个不同/不同的类/对象彼此兼容以进行通信。 它们都是结构模式。 我发现他们两个彼此非常相似。
有人能解释一下究竟是什么让它们与众不同吗?
编辑:我经历了这个问题。 但我更愿意对 Adapter 和 Proxy 进行仔细比较。
适配器:
UML图:
您可以通过此SE帖子中的工作代码示例找到有关此模式的更多详细信息:
代理:
代理为另一个对象提供代理或占位符以控制对它的访问。
UML图:
存在代理模式适用的常见情况。
有关工作代码,请查看有关Proxy的tutorialspoint文章。
主要差异:
您可以在代理和适配器文章的sourcemaking文章中找到有关这些模式的更多详细信息。
其他有用的文章:dzone 代理
从这里 :
适配器为其主题提供不同的界面。 代理提供相同的接口。
您可能会认为适配器应该使一件事适合另一件适合的,如果直接连接则不兼容。 例如,当您出国旅行时,需要一个电源插座适配器。
现在,Proxy是同一接口的对象,可能是相同的基类(或子类)。 它只是“假装”成为(并且表现得像)实际对象,而是将实际行为(计算,处理,数据访问等)转发给底层的引用对象。
根据电气类比推断,客户端可以看到适配器的使用 - 也就是说,客户端“知道”正在使用适配器 - 而代理的使用可能更常被隐藏,或者“透明“ - 客户端认为正在使用实际对象,但它只是一个代理。
在实践中,包装器、适配器和代理的概念是如此密切相关,以至于这些术语可以互换使用。
顾名思义,包装器实际上是围绕另一个 object 或 function 的东西。例如,调用另一个 function 的 function,或管理另一个 object 的生命周期并转发请求和转发响应的 object。
适配器从字面上适应合同。 这通常是指更改 object 的接口,或更改方法签名。 在这两种情况下,这只能通过用不同的 object 或 function 包装来实现。
代理这个词用于完全相同的事情。 但是,一些来源会更明确地使用它来引用适配器来访问远程资源。 基本上,这意味着本地呼叫将被转发到远程 object 。 定义一个公共接口似乎很自然,然后可以在本地和远程为这些对象共享/重用。
注意:代理模式的后一种解释不再是真正的东西了。 这种方法在CORBA等技术炙手可热的时代是有意义的。 如果您要访问远程服务,那么明确定义请求、响应和上下文对象并使用 OpenAPI 或 XSD 等技术会更有意义。
适配器模式和代理模式之间的区别
适配器模式
代理模式
了解通过代码
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(){}
}
参考: 适配器模式和代理模式之间的区别
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.