Adapter Pattern
An adapter is a wrapper that converts the interface of an existing class into another interface that would be expected by a different client. It is a way of bridging the gap between incompatible interfaces.
- It is often used to make existing classes work with others without modifying their source code.
- ex. the Browser uses an adapter to convert the interface of a DOM of an XML document into a tree that can be displayed.
Anal: we have adapters for electrical sockets when visiting foreign countries. These bridge the gap between 2 interfaces that are incompatible with one another
An adapter may also be known as a wrapper, though that name may also refer to a decorator.
An adapter allows two incompatible interfaces to work together. It does this by converting the interface of one class into an interface expected by the clients.
- Interfaces may be incompatible, but the inner functionality should suit the need.
The adapter design pattern solves problems like:
- How can a class be reused that does not have an interface that a client requires?
- How can classes that have incompatible interfaces work together?
- How can an alternative interface be provided for a class?
Often an (already existing) class can't be reused only because its interface doesn't conform to the interface clients require. The adapter design pattern describes how to solve such problems:
- Define a separate adapter class that converts the (incompatible) interface of a class (adaptee) into another interface (target) clients require.
- Work through an adapter to work with (reuse) classes that do not have the required interface.
The key idea in this pattern is to work through a separate adapter that adapts the interface of an (already existing) class without changing it.
Backlinks