어댑터 패턴(Adapter Pattern)은 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와줍니다.
// 구형 인터페이스 Enumeration을 신형 인터페이스 Iterator로 연결
public class EnumerationIterator implements Iterator<Object> {
// 어댑티를 인스턴스 변수에 저장(객체 컴포지션)
private Enumeration<?> enumeration;
public EnumerationIterator(Enumeration<?> enumeration) {
this.enumeration = enumeration;
}
@Override
public boolean hasNext() {
// Iterator의 hasNext() 메소드를 Enumeration의 hasMoreElements() 메서드로 연결
return this.enumeration.hasMoreElements();
}
@Override
public Object next() {
// Iterator의 next() 메소드를 Enumeration의 nextElement() 메서드로 연결
return this.enumeration.nextElement();
}
@Override
public void remove() {
// Iterator의 remove() 메소드는 지원되지 않으므로 예외처리
throw new UnsupportedOperationException();
}
}
출처