본문 바로가기
GoF의 디자인 패턴

어댑터(Adapter) 패턴

by 아토로 2022. 1. 13.

기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴

 

클라이언트가 사용하는 인터페이스를 따르지 않는 기존 코드를 재사용할 수 있게 해 준다.

구현 방법

장점과 단점

장점

  • 기존 코드를 변경하지 않고 원하는 인터페이스 구현체를 만들어 재사용할 수 있다.(개방-폐쇄 원칙)
  • 기존 코드가 하던 일과 특정 인터페이스 구현체로 변환하는 작업을 각기 다른 클래스로 분리하여 관리할 수 있다.(단일 책임 원칙)

단점

  • 새 클래스가 생겨 복잡도가 증가할 수 있다. 경우에 따라서는 기존 코드가 해당 인터페이스를 구현하도록 수정하는 것이 좋은 선택이 될 수도 있다.

실무 적용 사례

  • 자바
    • java.util.Arrays#asList(T…)
    • java.util.Collections#list(Enumeration), java.util.Collections#enumeration()
    • java.io.InputStreamReader(InputStream)
    • java.io.OutputStreamWriter(OutputStream)
  • 스프링
    • HandlerAdpter: 우리가 작성하는 다양한 형태의 핸들러 코드를 스프링 MVC가 실행할 수 있 는 형태로 변환해주는 어댑터용 인터페이스.

예제 코드

https://github.com/jsyang-dev/study-designpattern/tree/master/src/main/java/me/study/designpattern/adapter

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

퍼사드 패턴  (0) 2022.01.28
템플릿 메소드(Template method) 패턴  (0) 2022.01.19
프로토타입(Prototype) 패턴  (0) 2022.01.10
빌더(Builder) 패턴  (0) 2022.01.08
추상 팩토리 패턴  (0) 2022.01.06

댓글