Backend/디자인패턴
어댑터 패턴
chjysm
2023. 5. 15. 13:55
어댑터 패턴?
호환 되지 않는 인터페이스 를 가지는 객체들이 협업할 수 있도록 하는 구조적 디자인 패턴 이다.
- 인터페이스 간 호환성
- 기존 코드의 랩퍼 처리
- 중개 행동
어댑터 패턴의 장점
- 단일 책임 원칙
- 개방 패쇄 원칙
- 클라이언트는 인터페이스를 통해 어댑터 사용 시
기존 클라이언트 코드를 손상하지 않고 새로운 유형의 어댑터 추가 가능 - 느슨한 연결 방식으로 보다 많은 유연성을 확보할 수 있다.
- 프로그램이 실행되는 와중에도 객체 변경 가능
어댑터 패턴의 단점
- 새로운 인터페이스, 클래스 추가로 인한 복잡성 증가
- 어댑터가 새로운 메서드를 재구성하는 경우, 추가 코드가 필요하다.
어댑터 패턴 구현
@Getter
@Setter
public static class TypeA{
private String data;
}
@Getter
@Setter
@AllArgsConstructor
public static class TypeB{
private String data;
}
public interface Adapter{
TypeB convertTypeAToTypeB( TypeA typeA );
}
public static class TypeConverter implements Adapter{
@Override
public TypeB convertTypeAToTypeB(TypeA typeA) {
return new TypeB( typeA.getData() );
}
}
public static void main(String[] args) {
TypeA a = new TypeA();
a.setData("data");
TypeConverter converter = new TypeConverter();
TypeB b = converter.convertTypeAToTypeB(a);
}
언제 사용해야 할까?
- 오래된 레거시 코드 나 라이브러리를 재사용 하는 경우
- 서로 호환되지 않는 인터페이스를 결합하기 위한 경우
참조