Adapter design pattern in java


Real life example:

A very simple example is using phone charger. Suppose your mobile phone needs 9 Volts of supply to get charged but main supply is 220 V which is not what you require but it can be a source and you can have something that can get 9 V out of this 220 V and supply to your phone for charging.
Now phone charger is acting as an adapter for you.  So Basically it is making a relationship between two unrelated interfaces. This  is how Adpater pattern works.


As described by Gof:
“Convert the interface of class into another interface clients expect.Adapter lets class work together that couldn’t otherwise because of incompatible interfaces”.

Also known as:


UML diagram of generic adapter design pattern:


  • Target
    • defines domains-specific interface client uses.
  • Client
    • collaborates with objects conforming to target interface.
  • Adaptee
    • defines existing interface that needs adapting
  • Adapter
    • adapts the interface of adaptee to target interface.


Clients call operations on the adapter instance.In turn adapter calls adaptee operations that carry out the request.

When to use it:

  • You want to use existing class and its interface does not match the one you need.
  • You want to create a resuable class that cooperates with unrelated or unforeseen classes that is, class that don’t necessarily have compatible interfaces.


UML Diagram for example:

Comparing to above generic description of adapter pattern.

My example includes following elements:

  • PrintableList(Target)
  • PrintString(Adaptee)
  • PrintableListAdapter(Adapter)

Java code for all above classes:

Consider that we have a third party library that provides print string functionality through PrintString class.
This is our Adaptee. I know this is silly assumpsion but lets go with it for now. :

Client deals with ArrayList but not with string.We have provided a PrintableList interface that expects the client input.This is our target.

Lets assume we can not change it now.
Finally we have PrintableListAdapter class which will implement PrintableList interface and will deal with our adaptee class.



Join Our News Letter – Stay Updated

Subscribe to Awesome Java Content.

Add Comment

Join Our News Letter - Stay Updated

Subscribe to Awesome Java Content.
You can like our facebook page Java2blog