Adapter Pattern in java
An adapter pattern helps two incompatible interfaces to work together. This is the real world definition for an adapter. The adapter
design pattern is used when you want two different classes with incompatible interfaces to work together. Interfaces may be incompatible but the
inner functionality should suit the need. The Adapter pattern allows otherwise incompatible classes to work together by converting the interface
of one class into an interface expected by the clients.
There are many real world examples, the simplest example is power socket and plug. American plug would not fit to British socket, and
viceversa. We use power adapter to fix this issue. The adapter design pattern works exactly similar to power adapter. Here is the UML structure for
adapter pattern:

Lets take a simple example. In a factory, there is a automated furnance system. The furnance can be controlled only through temperature
in fahrenheit format. But Furnance Regulatory systems gets tempareture in centigrade format. To fix this issue, we use adapter pattern.
FurnanceController class, which controls furnance temperature
package com.java2novice.dp.adapter;
public class FurnanceController {
/**
* this method accepts heat in Fahrenheit format
* @param heatLevel
*/
public void changeFurnanceTemperature(int heatLevel){
System.out.println("heat the furnance..");
}
}
|
Adapter class, which converts temperature from centigrade format to fahrenheit format.
package com.java2novice.dp.adapter;
public class FurnanceControllerAdapter extends FurnanceController{
/**
* this method access temperature only in centigrade format
* @param heatLevel
*/
public void controlFurnance(int heatLevel){
// convert temperature from centigrade to fahrenheit formate
heatLevel = (heatLevel - 32)*5/9;
changeFurnanceTemperature(heatLevel);
}
}
|
Regulatory system sample code:
package com.java2novice.dp.adapter;
public class FurnanceRegulatorySystem {
public void regulateFurnanceTemperature(){
/**
* here some lines of code gives temperature in centigrade format
*/
FurnanceControllerAdapter fca = new FurnanceControllerAdapter();
fca.controlFurnance(300);
}
}
|
|