기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴
클라이언트가 사용하는 인터페이스를 따르지 않는 기존 코드를 재사용할 수 있게 해 준다.
구현 방법
장점과 단점
장점
- 기존 코드를 변경하지 않고 원하는 인터페이스 구현체를 만들어 재사용할 수 있다.(개방-폐쇄 원칙)
- 기존 코드가 하던 일과 특정 인터페이스 구현체로 변환하는 작업을 각기 다른 클래스로 분리하여 관리할 수 있다.(단일 책임 원칙)
단점
- 새 클래스가 생겨 복잡도가 증가할 수 있다. 경우에 따라서는 기존 코드가 해당 인터페이스를 구현하도록 수정하는 것이 좋은 선택이 될 수도 있다.
실무 적용 사례
- 자바
- java.util.Arrays#asList(T…)
- java.util.Collections#list(Enumeration), java.util.Collections#enumeration()
- java.io.InputStreamReader(InputStream)
- java.io.OutputStreamWriter(OutputStream)
- 스프링
- HandlerAdpter: 우리가 작성하는 다양한 형태의 핸들러 코드를 스프링 MVC가 실행할 수 있 는 형태로 변환해주는 어댑터용 인터페이스.
예제 코드
'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 |
댓글