The adapter pattern converts the interface of one class into another interface that clients expect. It allows classes to work together that otherwise could not due to incompatible interfaces. There are two common implementations: class adapter uses inheritance to adapt the interface, while object adapter uses composition by delegating to the adapted class. The adapter pattern is useful for integration work to combine existing classes with mismatched interfaces.