intent: Convert the interface of a class into another interface that the clients expect. Adapter lets classes work together that could not otherwise because of incompatible interface.
Problem: A system has the right data and behavior but the wrong interface. Typically used when you have to make something a derivative of an abstract class we are defining or already have.
Solution: Warp it
variation : Oject Adapter, Class Adapter.
- Object Adapter pattern - composition
- Class Adapter pattern - inheritance
Difference between Facade and Adapter
| Facade | Adapter |
Are there preexisting classes? | Yes | Yes |
Is there an interface we must design to? | No | Yes |
Does an object need to behave polymorphically? | No | Yes |
Is a simpler interface needed? | Yes | No |