Adapter Pattern
Adapter Pattern이란?
- 호환되지 않는 인터페이스를 가직 객체들을 협업을 할 수 있도록하는 구조적 디자인 패턴
- 주요 구성요소
- 타겟(target) : 클라이언트가 직접적으로 호출하는 인터페이스
- 어댑티(adaptee) : 아직 호환되지 않은 기존 클래스
- 클라이언트 : 특정 작업을 요청하는 클래스
- 어댑터 : 타겟 인터페이스를 구현하여 클라이언트 요청을 어댑티로 전달하는 클래스
Adapter Pattern 구현방법
- 서로 호환되지 않는 (인터페이스가있는) 클래스를 호환시키기 위해 신규 클라이언트 인터페이스를 선언한다.
- 신규 인터페이스의 구현객체에 해당 서비스를 호출 가능하도록 만드는 코드 작성한다.
- 클라이언트에서 서비스를 직접 호출하지않고 신규로 생성한 어댑터 인터페이스를 통해 호출하도록한다.
Adapter Pattern 적용
- spring security 설정 시 userDetail객체와 custom user 사이에 어댑터를 만들기도 함
- I/O라이브러리에서도 자주 사용되는 패턴
- ex) InputStreamReader : ByteStream → StringStream
Adapter Pattern 장단점
- 장점
- 기존 클래스를 수정하지 않고도 클라이언트에서 새로운 인터페이스를 사용할 수 있다.
- 클래스간의 결합도를 줄여주어 변경이 상대적으로 자유로움
- 단점
- 코드의 복잡성이 증가하여 유지보수가 어려울 수 있다.
- 어댑터 클래스의 변환과정에 추가적인 처리시간으로 오버헤드가 발생할 수 있다.
references
어댑터 패턴
/ 디자인 패턴들 / 구조 패턴 어댑터 패턴 다음 이름으로도 불립니다: 래퍼(Wrapper), Adapter 의도 어댑터는 호환되지 않는 인터페이스를 가진 객체들이 협업할 수 있도록 하는 구조적 디자인 패턴
refactoring.guru
'Design Pattern' 카테고리의 다른 글
[Design Pattern] Bridge Pattern (0) | 2024.04.02 |
---|---|
[Design Pattern] Prototype Pattern (0) | 2024.03.18 |
[Design Pattern] Abstract Factory (0) | 2024.03.17 |
[Design Pattern] Factory Method Pattern (0) | 2024.03.16 |
[Design Pattern] Builder Pattern (0) | 2024.03.15 |