1. 어댑터 패턴

어댑터 패턴은
기존 시스템에서 새로운 라이브러리를 추가할 때
호환될 수 있도록 중간 레이어 클래스를 만드는 작업을 말한다.
2. 어댑터 패턴 예제

상황 1
- SortingMachine 클래스는 ISortEngine 인터페이스를 의존하여 A_SortEngine을 사용해 왔다.
- 그러다 성능 문제로 인하여 타 회사(B)의 엔진으로 교체 결정을 하게 되었다.
상황 2
- 타 회사(B)로부터 전달받은 B_SortEngine을 가져왔으나 기존 코드와 호환되지 않았다.
- 기존 코드에서 작동되도록 B_SortEngine 코드를 수정해볼까 생각하였으나 이는 원본 코드를 훼손할 뿐더러 어느 정도의 시간이 걸릴지 예측할 수 없었다.
해결 방안
- 기존의 코드에서 사용하는 ISortEngine 인터페이스를 구현한 중간 클래스를 만든다.
- 중간 클래스는 B_SortEngine을 소유한다. (컴포지션 관계)
- 기존의 코드에서 중간 클래스(ISortEngine 인터페이스)를 호출할 때 연관된 소유한 B_SortEngine 함수를 호출하도록 구현한다.
정리

- 중간 클래스를 만들어 기존의 코드와 B_SortEngine이 호환되도록 구현하였다.
- 이렇게 구현한 패턴을 어댑터 패턴이라고 한다.
참고
'Design Pattern' 카테고리의 다른 글
| [Design Pattern] 퍼사드 패턴 (Facade) (0) | 2025.04.11 |
|---|---|
| [Design Pattern] 프록시 패턴 (Proxy Pattern) (0) | 2025.04.10 |
| [Design Pattern] 팩토리 패턴 (Factory Pattern) (0) | 2025.04.08 |
| [Design Pattern] 반복자 패턴 (Iterator Pattern) (0) | 2025.04.07 |
| [Design Pattern] 템플릿 메서드 (0) | 2025.04.04 |