디자인 패턴/구조 패턴
Adapter 패턴
언린이
2021. 9. 11. 15:26
Adapter 패턴은 서로 다른 인터페이스를 가진 두 클래스를 Adapter 클래스로 인터페이스를 통일시켜 사용할 수 있게 해주는 패턴입니다.
구조
- Client
- 써드파티 라이브러리나 외부 시스템을 사용하는 곳입니다.
- Target
- Adapter가 구현하는 인터페이스입니다. Client는 Target 인터페이스를 통해 Adaptee인 써드파티 라이브러리를 사용하게 됩니다.
- Adapter
- Client와 Adaptee 중간에서 호환성이 없는 둘을 연결시켜주는 역할을 담당합니다. Target 인터페이스를 구현하며, Client는 Target 인터페이스를 통해 Adapter에 요청을 보냅니다. Adapter는 Client의 요청을 Adaptee가 이해할 수 있는 방법으로 전달하고, 처리는 Adaptee에서 이루어집니다.
- Adaptee
- 써드파티 라이브러리나 외부 시스템을 의미합니다.
활용 상황
- 기존의 코드에 새로운 코드(써드파티 라이브러리, 외부 시스템)를 연동하여 사용하고 싶은데, 두 코드의 인터페이스가 달라, 이를 하나로 통일하여 사용하고 싶을때 유용합니다.
Adapter 패턴의 장단점
- 장점
- 기존 클라이언트 단의 코드 수정을 최소화할 수 있습니다.
- 클라이언트는 연동 부분을 몰라도, 새로운 코드의 기능을 일관되게 사용할 수 있습니다.
- 단점
- Adapter 클래스에서 통일시켜주는 부분을 하나씩 구현해야 합니다.