Adapter Pattern

Adapter Patternμ ν ν΄λμ€μ μΈν°νμ΄μ€λ₯Ό μ¬μ©νκ³ μ νλ λ€λ₯Έ μΈν°νμ΄μ€λ‘ λ³ννλ κ²μ μλ―Ένλ€. μ΄λν° ν¨ν΄μ μ΄μ©νλ©΄ μΈν°νμ΄μ€ νΈνμ± λ¬Έμ λλ¬Έμ κ°μ΄ μ¬μ©ν μ μλ ν΄λμ€λ€μ κ°μ΄ μΈ μ μλ€.
Adapter Patternμ ꡬ쑰 ν¨ν΄μΌλ‘ μΈν°νμ΄μ€λ ꡬνμ 볡ν©νλ κ²μ΄ μλ, κ°μ²΄λ₯Ό ν©μ±νλ λ°©λ²μ μ 곡νλ€. μ΄λ μ»΄νμΌ λ¨κ³μμκ° μλ λ°νμ λ¨κ³μμ λ³΅ν© λ°©λ²μ΄λ, λμμ λ³κ²½ν μ μλ€λ μ μμ μ μ°μ±μ κ°μ§λ€.
μ΄λν° ν¨ν΄μ Class Adapterμ Object Adapter λ°©μμ΄ μλ€.
Class Adapter : μλ° μμ(inheritance)μ μ΄μ©ν λ°©λ²
Object Adapter : μλ° ν©μ±(Composite)μ μ΄μ©ν λ°©λ²
μμ
volt κ°μ κ°μ§κ³ μλ POJO ν΄λμ€
public class Volt {
private int volts;
public Volt(int v){
this.volts=v;
}
public int getVolts() {
return volts;
}
public void setVolts(int volts) {
this.volts = volts;
}
}
Socket : 120 Volt μμ± ν΄λμ€
public class Socket {
public Volt getVolt(){
return new Volt(120);
}
}
120 λ³ΌνΈ μΈμ μΆκ°μ μΌλ‘ 3, 12 voltλ μΆκ°λ‘ μμ±νλ μ΄λν°
public interface SocketAdapter {
public Volt get120Volt();
public Volt get12Volt();
public Volt get3Volt();
}
Class Adapter λ°©μ
public class SocketClassAdapterImpl extends Socket implements SocketAdapter{
@Override
public Volt get120Volt() {
return getVolt();
}
@Override
public Volt get12Volt() {
Volt v= getVolt();
return convertVolt(v,10);
}
@Override
public Volt get3Volt() {
Volt v= getVolt();
return convertVolt(v,40);
}
private Volt convertVolt(Volt v, int i) {
return new Volt(v.getVolts()/i);
}
}
Object Adapter λ°©μ
public class SocketObjectAdapterImpl implements SocketAdapter{
//Using Composition for adapter pattern
private Socket sock = new Socket();
@Override
public Volt get120Volt() {
return sock.getVolt();
}
@Override
public Volt get12Volt() {
Volt v= sock.getVolt();
return convertVolt(v,10);
}
@Override
public Volt get3Volt() {
Volt v= sock.getVolt();
return convertVolt(v,40);
}
private Volt convertVolt(Volt v, int i) {
return new Volt(v.getVolts()/i);
}
}
main
public static void main(String[] args) {
// object adapter
SocketAdapter sockAdapter = new SocketObjectAdapterImpl();
Volt v3 = sockAdapter.get3Volt();
Volt v12 = sockAdapter.get12Volt();
Volt v120 = sockAdapter.get120Volt();
// class adapter
SocketAdapter sockAdapter = new SocketClassAdapterImpl();
Volt v3 = sockAdapter.get3Volt();
Volt v12 = sockAdapter.get12Volt();
Volt v120 = sockAdapter.get120Volt();
}
μ°Έκ³
Last updated
Was this helpful?