Design patterns 垫片和门面/适配器模式之间有什么区别?

Design patterns 垫片和门面/适配器模式之间有什么区别?,design-patterns,terminology,shim,Design Patterns,Terminology,Shim,我正在开发一个应用程序,它需要与某些库的不同不兼容版本一起工作。我的直觉是在应用程序和库之间引入一个适配器,将适当的库对象注入其中。然后,有人告诉我垫片的事。关于它的文献不多 我想知道垫片和门面和适配器设计模式有何不同?在我看来,适配器和垫片是一样的 另一方面,立面的用途不同。如果您希望您的客户机代码能够拉回帷幕,也就是说,在不使用对象模型的情况下访问底层库,那么这将是一个门面。Facade在更复杂的系统上提供了一组简化的或通用的对象/方法,但在需要其他行为时仍然提供了对底层复杂性的访问 使用适

我正在开发一个应用程序,它需要与某些库的不同不兼容版本一起工作。我的直觉是在应用程序和库之间引入一个适配器,将适当的库对象注入其中。然后,有人告诉我垫片的事。关于它的文献不多


我想知道垫片和门面和适配器设计模式有何不同?在我看来,适配器和垫片是一样的

另一方面,立面的用途不同。如果您希望您的客户机代码能够拉回帷幕,也就是说,在不使用对象模型的情况下访问底层库,那么这将是一个门面。Facade在更复杂的系统上提供了一组简化的或通用的对象/方法,但在需要其他行为时仍然提供了对底层复杂性的访问


使用适配器意味着您的客户机代码完全不知道底层的实现细节。

IMO,适配器和垫片的功能类似,但含义不同

垫片
通常具有非常相似(如果不精确)的接口集
,对象被“垫片”。例如,代理对象可以被视为有点像垫片

虽然适配器通常具有非常不同(如果不是完全不同的话)的接口集,对象被“调整”


注意“shim”和“adapt”动词。这就是我通常区分两者的方式。

正面/适配器差异的很好解释。@Chakrit但你的回答澄清了垫片和适配器之间的差异参见类似内容:动词的好提示