PSD( Private-Self-Development )

어댑터 패턴 본문

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);
}

 

언제 사용해야 할까?

  • 오래된 레거시 코드 나 라이브러리를 재사용 하는 경우
  • 서로 호환되지 않는 인터페이스를 결합하기 위한 경우

참조

https://refactoring.guru/ko/design-patterns/adapter

'Backend > 디자인패턴' 카테고리의 다른 글

브리지 패턴  (0) 2023.05.15
디자인 패턴  (0) 2023.05.15
프로토타입 패턴  (0) 2023.05.10
빌더 패턴  (0) 2023.05.09
추상 팩토리 패턴  (0) 2023.05.09