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

时间:2012-03-01 08:13:59

标签: design-patterns terminology shim

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

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

2 个答案:

答案 0 :(得分:13)

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

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

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

答案 1 :(得分:9)

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

Shim通常具有非常相似的(如果不是确切的话)接口集,其中对象为“shimmed”。例如,代理对象可能被认为有点像垫片。

虽然 Adapter通常具有完全不同的界面,但对象是“适应的”。

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