패스잇
CS 기초 · 중급

Adapter 패턴과 Facade 패턴은 모두 기존 시스템이나 라이브러리와의 상호작용을 돕는 구조 패턴입니다. 두 패턴의 목적과 사용 시점을 비교하여 설명하고, 각각의 실질적인 적용 사례를 들어주세요.

힌트 · Adapter는 호환되지 않는 인터페이스를 맞추고, Facade는 복잡한 서브시스템에 대한 단순화된 인터페이스를 제공합니다.

인터페이스 변환단일 인터페이스 제공기존 시스템 통합복잡성 은닉클라이언트 단순화

모범답안

Adapter 패턴과 Facade 패턴은 둘 다 기존 시스템과의 연동을 돕지만, 목적과 사용 시점이 다릅니다.

Adapter 패턴은 주로 호환되지 않는 인터페이스를 가진 클래스들을 함께 작동하도록 변환하는 데 사용됩니다. 마치 전압 변환기처럼, 기존의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 바꿔주는 역할을 합니다. 예를 들어, 레거시 시스템의 API가 최신 라이브러리의 요구사항과 맞지 않을 때 Adapter를 사용하여 인터페이스를 맞춰줄 수 있습니다.

Facade 패턴은 복잡한 서브시스템에 대해 단순화된 통합 인터페이스를 제공하는 데 중점을 둡니다. 여러 개의 클래스로 구성된 복잡한 라이브러리나 프레임워크를 사용할 때, Facade는 클라이언트가 이 서브시스템의 복잡성을 알 필요 없이 간단한 메서드 호출로 기능을 사용할 수 있게 해줍니다. 예를 들어, 데이터베이스 연결, 쿼리 실행, 결과 처리 등 여러 단계가 필요한 데이터 접근 로직을 Facade로 묶어 클라이언트에게는 간단한 getData() 메서드만 노출할 수 있습니다.

요약하자면, Adapter는 '인터페이스 변환'에, Facade는 '복잡성 은닉 및 단순화된 인터페이스 제공'에 초점을 맞춘다고 볼 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 디자인 패턴 면접 질문

← 디자인 패턴 면접 질문 전체 보기