What is the difference between the Facade, Proxy, Adapter, and Decorator design patterns?
From a generic point of view, such patterns seem to do the same thing, that is: wrap an API and provide access to it.
How to distinguish these patterns?
How to discern when one pattern suits more than the others?