垫片和外观/适配器模式有什么区别?

Ana*_*lya 21 design-patterns terminology shim

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

我想知道垫片与外观和适配器设计模式有何不同?什么是一些流行的用途?

tca*_*vin 15

在我看来,适配器和垫片是一样的.

另一方面,Facade有不同的用途.如果您希望您的客户端代码需要能够拉回窗帘,可以这么说,并且在不使用对象模型的情况下访问底层库,那么这将是一个Facade.Facade在更复杂的系统之上呈现简化或通用的对象/方法集,但是当需要额外行为时仍然提供对底层复杂性的访问.

使用适配器意味着您的客户端代码完全没有意识到底层实现细节.

  • @Chakrit但是你的回答澄清了垫片和适配器之间的差异 (2认同)

cha*_*rit 14

IMO,Adapter和Shim功能类似,但意味着不同的东西.

A Shim通常具有非常相似的(如果不是精确的话)接口集,其中对象被"填充".例如,代理对象可能被认为有点像垫片.

虽然Adapter通常具有完全不同的(如果不是完全不同的)接口集,其中对象被"适应".

注意"垫片"和"适应"动词.这就是我通常区分这两者的方式.