Summary
That’s going to close out our Adapter pattern discussion, but let’s review the key points before you run off and reformat your projects into a variety of target interfaces! First, the Adapter pattern is best for cases where you have existing or third-party classes you want to integrate into a cohesive interface for your client code, but it can also be used to support cross-platform APIs and create common reusable interfaces, and it is a great fit to build test mocks when unit-testing your applications.
The Adapter pattern is made up of the target interface, adapter class (or classes), adaptee class (or classes), and a client. Both the adapter and adaptee classes need to implement the target interface so that your client doesn’t need to know which is which when calling their behaviors. As we saw, you can choose to create your adapter classes as either class adapters or object adapters, depending on whether inheritance or composition is a better fit...