The adapter design pattern is employed when a component in your system doesn't provide an appropriate interface, API, or surface to make it compatible with the rest of the system. Adapters can be thought of as real-world adapters, or dongles.
There are a number of ways to implement the adapter pattern in Swift by leveraging inheritance, aggregation, or extensions.