title: What is the difference between the shim and facade/adapter patterns?
body: <p>I'm developing an application that need to work with different incompatible versions of some library. My gut instinct was introducing an adapter between the app and the library that will have proper object of the library injected in it. Then, someone told me about shims. Not much literature is available about it. </p>
  
  <p>I wanted to know how are shims different from facade and adapter design pattern? And what are some of the popular uses of the same?</p>