The Adapter pattern converts the interface of one class into another interface clients expect. It allows classes to work together that couldn't otherwise due to incompatible interfaces. The adapter provides a wrapper with the desired interface. The proxy pattern provides a surrogate for another object to control access to it. It allows controlling access to an object for reasons like delaying expensive object creation or providing a local representation of a remote object. The proxy maintains a reference to access the real subject and implements the same interface to act as a substitute, controlling access and potentially creating/deleting the real subject.