Third-party SDKs and legacy code rarely have the method names and types your code expects, and you cannot edit them. An adapter wraps the existing class and exposes the interface your code wants, like a travel plug. Use it when integrating a payment gateway or migrating between vendors, so switching later means writing one new adapter. If you want to add behaviour while keeping the same interface, that is a Decorator, and a simple front for a whole subsystem is a Facade.