Adapter
Intent
Convert the interface of a class into another interface that clients expect.Adatper let classes work together that couldn't otherwise because of incompatible interfaces.
Applicability
Use Adapter pattern when
1)you want to use an existing class,and its interface does not match what you need.
Structure
Object Adapter
Class Adapter
Participant
1)Target
defines the domain-specific interface that Client expects.
2)Client
collaborates with objects conforming to the Target interface.
3)Adaptee
defines an existing interface that needs adapting.
4)Adapter
adapts the interface of adaptee to the Target interface
Consequences
Class adapter and Object adapter has different trade-offs.
for class adapter:
1)lets Adapter override some of Adaptee's behavior, since Adapter is a subclass of
Adaptee
2)adapts Adaptee to Target by committing to a concrete Adapter class. As a
consequence, a class adapter won't work when we want to adapt a class and all its
subclasses
3) introduces only one object,and no additional pointer indirection is needed to get to adaptee..
for Object adapter:
1)Let a single adapter work with many adaptees-that is,the adaptee itself and all of its subclasses(if any).The Adapter can also add functionality to all adaptees at once.
2) Makes it harder to override Adaptee behavior.It will require subclassing Adaptee and making Adapter refer to the subclass rather than the Adaptee itself.
Two-way adapter.
Usage
Data transforming.