The Adapter Pattern

Create an Adapter when an object exists (the Adaptee) that provides the functionality desired by the client, but doesn't implement the interface (Target) required by the client.

There are two variants of the Adapter Pattern. An object adapter delegates to an adaptee object:

A class adapter calls methods inherited from the Adaptee class: