我正在开发一个需要使用某些库的不同不兼容版本的应用程序。我的直觉是在应用程序和库之间引入一个适配器,该适配器将在其中注入适当的库对象。然后,有人告诉我关于垫片的事。关于它的文献不多。
我想知道垫片与外观和适配器设计模式有何不同?相同的一些流行用途是什么?
我正在开发一个需要使用某些库的不同不兼容版本的应用程序。我的直觉是在应用程序和库之间引入一个适配器,该适配器将在其中注入适当的库对象。然后,有人告诉我关于垫片的事。关于它的文献不多。
我想知道垫片与外观和适配器设计模式有何不同?相同的一些流行用途是什么?
在我看来,Adapter 和 Shim 是一样的。
另一方面,Facade 用于不同的目的。如果您希望您的客户端代码能够拉开帷幕,可以这么说,并在不使用您的对象模型的情况下访问底层库,那将是一个 Facade。Facade 在更复杂的系统之上提供了一组简化或通用的对象/方法,但在需要额外行为时仍提供对底层复杂性的访问。
使用 Adapter 意味着您的客户端代码完全不知道底层实现细节。
IMO、Adapter 和 Shim 功能相似,但含义不同。
A通常与被“填充”的对象Shim
具有非常相似(如果不精确)的一组接口。例如,代理对象可以被认为有点像 shim。
虽然通常与正在“适应”的对象Adapter
具有完全不同(如果不是完全不同的话)的一组接口。
注意“shim”和“adapt”动词。这就是我通常区分两者的方式。