Context:

The requirement for concrete type implementation is already met, but by a non-native type.

Challenge:

To make the different type substitutable within the native interface.

Skill:

Participants:

Native Interface:

The set of permissible message selectors for a common functionality.

Adaptee:

A set of methods for the native functionality, provided with the wrong message selectors. (In a strongly-typed language:) not derived from Native Interface.

Adapter:

Represents the Adaptee in the system, interpreting to Adaptee language. Usually, does little more than forwarding, but may also aggregate functionally, separate functionality or emulate missing functionality.

Signature:

Adapter references (or contains) Adaptee, representing it. Adapter implements Interface.

Used by:

clients of legacy code.

Scope:

General. (Preferably, languages where late binding is obligatory.)