
어댑터를 번역하면 변환기 이다
어댑터는
두 인터페이스 사이의 통신을 가능하게 하는 것 (래핑하여)
⇒ 호환되지 않는 인터페이스들을 연결하는 디자인 패턴
Circle circle = new Circle(3);
Rectangle rectangle = new Rectangle(3);
circle.getRadius();
// rectangle.getRadius() ??
위 코드를 보자 사각형한테서 반지름을 얻어오려 하고있다…
직사각형엔 반지름이 없다.. 하지만 사각형 대각선의 절반이 반지름이라 약속한다면….

클라이언트는 직사각형이 원 인줄 알고 사용하지 않을까…?
public class RectangleAdapter extends Circle {
private Rectangle rectangle;
public RectangleAdapter(Rectangle rectangle) {
this.rectangle = rectangle;
}
@Override
public int getRadius() {
return (int) (rectangle.getWidth() * Math.sqrt(2) / 2);
}
}
Circle circle1 = new Circle(3);
Circle circle2 = new RectangleAdapter(new Rectangle(3));
circle1.getRadius();
circle2.getRadius();
위처럼 통신이 불가능했던 클래스 또는 인터페이스를 래핑하여 통신이 가능케 하는 패턴을 어댑터 패턴이라 한다.