The Adapter pattern allows classes to work together that normally could not because of incompatible interfaces. It converts the interface of a class into another interface that a client expects. Adapters are used to make existing classes work with others without modifying their code by acting as a bridge between incompatible interfaces. Some examples include data adapters that allow different data sources to work with datasets and .NET using runtime callable wrappers as adapters between .NET code and COM objects.