Adapter Pattern์ adaptee์ target์ ๊ฐ๋ ์ ์ ํํ ์ดํดํ๋ฉด ์ฌ์์ง๋๋ฐ ์ด ๋ถ๋ถ์ ํ์คํ ์ธ์งํ๊ณ ์ฝ๋๋ฅผ ๋ณด์!
220V ์ด๋ํฐ๋ฅผ 110V ์ด๋ํฐ๋ก ๋ฐ๊ฟ์ ์ฌ์ฉํ ์ ์๊ฒ๋ ํด์ฃผ๋ ๊ฒ๊ณผ ๋์ผํ๋ค.
๊ธฐ์กด์๋ ํธํ๋์ง ์๋ ์ธํฐํ์ด์ค๋ฅผ ํธํ์ด ๊ฐ๋ฅํ๋๋ก ๋ณ๊ฒฝํด์ฃผ๋ ๋์์ธ ํจํด์ด๋ค.
public interface SamsungCharging {
void samsungCharging();
}
public class SamsungChargingImpl implements SamsungCharging{
@Override
public void samsungCharging() {
System.out.println("์ผ์ฑ ํธ๋ํฐ ์ถฉ์ ์์");
}
}
public interface AppleCharging {
void appleCharging();
}
public class AppleChargingImpl implements AppleCharging{
@Override
public void appleCharging() {
System.out.println("์ ํ ํธ๋ํฐ ์ถฉ์ ์์");
}
}
๋ค์๊ณผ ๊ฐ์ด ๊ฐ ์ผ์ฑ๊ณผ ์ ํ ์ถฉ์ ๊ธฐ๊ฐ ์๋ค. ํด๋น ์ถฉ์ ๊ธฐ๋ค์ ์๋ก ํธํ๋์ง ์์ผ๋ฉฐ ๊ฐ์ samsungCharging
appleCharging
๋ฉ์๋๋ฅผ ์คํํ์ฌ ์ถฉ์ ์ ์์ํ๋ค.
public class Client {
public static void main(String[] args) {
SamsungCharging samsung = new SamsungChargingImpl();
samsung.samsungCharging();
AppleCharging apple = new AppleChargingImpl();
apple.appleCharging();
}
}
์ฌ์ฉ์๋ ๊ฐ๊ฐ์ ์ถฉ์ ๊ธฐ๋ฅผ ๊ตฌํํ์ฌ ๊ฐ๊ฐ ์ถฉ์ ์ ์์ํด์ฃผ์ด์ผํ๋ค.
๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ์ ํ ์ถฉ์ ๊ธฐ๊ฐ ์ถฉ์ฒ ํฌํธ ํตํฉ์ผ๋ก ์ธํด ์ผ์ฑ ์ถฉ์ ๊ธฐ๋ก๋ ์ถฉ์ ์ ์์ํ ์ ์๋๋ก ๋ง๋ค์ด์ฃผ์ด์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ๋ค.
public class AppleChargingAdapter implements SamsungCharging {
private AppleCharging appleCharging;
public AppleChargingAdapter(AppleCharging appleCharging) {
this.appleCharging = appleCharging;
}
@Override
public void samsungCharging() {
appleCharging.appleCharging();
}
}
AppleChargingAdapter
๋ target์ด ๋๋ SamsungCharging
์ ์์ํ๊ณ adaptee๊ฐ ๋๋ AppleCharging
๋ฅผ ์์ฑ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ์ฑ ์ถฉ์ ๊ธฐ๋ก๋ ์ ํ์ ์ถฉ์ ํ ์ ์๋๋ก ์คํํด์ฃผ๋ฉด
public class Client {
public static void main(String[] args) {
AppleCharging apple = new AppleChargingImpl();
AppleChargingAdapter adapter = new AppleChargingAdapter(apple);
adapter.samsungCharging();
}
}
์ด๋ ๊ฒ adaptee์ธ Apple์ ์ถฉ์ ์ ์์ํ๋ค๋ ๋ฌธ๊ตฌ๋ฅผ ํ์ธํ ์ ์๋ค!
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์ด ํจํด์ ํน์ง์ผ๋ก ๋ณผ ์ ์๋ ๊ฒ์ ๊ธฐ์กด์ AppleCharging์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์์ง๋ง(=
๊ธฐ์กด ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๋ OCP
) Adapter๋ฅผ ์ฌ์ฉํ์ฌ samsungCharging ์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ๊ตฌํํด๋ณผ ์ ์์๋ค.