- 클래스의 인터페이스를 클라이언트가 원하는 형태의 또 다른 인터페이스로 변환
- 어댑터는 호환되지 않는 인터페이스때문에 동작하지 않는 클래스들을 함께 동작할 수 있도록 만들어준다.
Wrapper: int ➡️ Integer
→ 변경을 최소화해서 클라이언트를 유지해준다.
public interface Duck {
public void quack();
public void fly();
}
class MallardDuck implements Duck{
public void quack(){
System.out.println("Quack");
}
public void fly(){
System.out.println("I'm flying");
}
}
public interface Turkey {
public void gobble();
public void fly();
}
class WildTurkey implements Turkey{
@Override
public void gobble() {
System.out.println("Gobble gobble");
}
@Override
public void fly() {
System.out.println("I'm flying a short distance");
}
}
turkey -> duck 변환
public class TurkeyAdapter implements Duck{
Turkey turkey;
public TurkeyAdapter(Turkey turkey) {
this.turkey = turkey;
}
@Override
public void quack() {
turkey.gobble();
}
@Override
public void fly() {
for (int i = 0; i < 5; i++) {
turkey.fly();
}
}
}