정처기 감자정처기 감자
SW 설계디자인패턴

어댑터 adapter 패턴 - 자바스크립트 예제

SW설계디자인패턴
읽는데 12분 소요
처음 쓰인 날: 2025-09-01
마지막 수정일: 2025-09-02
조회수: —

요약

어댑터 adapter 패턴을 자바스크립트 코드와 함께 알아봅니다. 정보처리기사 대비 문제가 포함되어있습니다.

어댑터 패턴 요약

패턴 종류핵심 키워드
어댑터 (Adapter)서로 다른 인터페이스 연결
어댑터 패턴 감자
어댑터 패턴 감자

어댑터 (Adapter) 패턴

어댑터 패턴은 이름 그대로, 호환되지 않는 인터페이스를 가진 클래스들을 함께 동작하도록 변환해주는 디자인 패턴입니다. 현실 세계의 '돼지코' 어댑터(110V를 220V로)를 생각하면 이해하기 쉽습니다. 기존 코드를 수정하지 않고도 새로운 클래스나 외부 라이브러리를 시스템에 통합하고 싶을 때 매우 유용합니다.

기본 구조

어댑터 패턴은 세 가지 주요 요소로 구성됩니다.

  • Target: 클라이언트가 사용하려는 목표 인터페이스입니다.
  • Adaptee: 호환되지 않는 인터페이스를 가진 기존 클래스입니다. (우리가 사용하고 싶은 기능)
  • Adapter: Adaptee의 인터페이스를 Target 인터페이스에 맞게 변환해주는 역할을 합니다.

예시: 웹 스토리지 API 호환시키기

웹 브라우저에는 localStorage와 sessionStorage라는 두 가지 데이터 저장소가 있습니다. 두 API는 setItem(key, value), getItem(key) 등 유사한 인터페이스를 가지고 있지만, 만약 sessionStorage에만 데이터를 JSON 형태로 자동 변환하여 저장하는 특별한 기능이 필요하다고 가정해봅시다.

우리의 애플리케이션은 Storage라는 표준 인터페이스(Target)를 통해 데이터 저장을 처리하도록 설계되었습니다.

javascript
코드 하이라이팅 중…

기본적으로 localStorage는 이 Storage 인터페이스를 그대로 사용할 수 있습니다.

javascript
코드 하이라이팅 중…

이제 sessionStorage를 사용하고 싶은데, 이 클래스는 데이터를 저장할 때 자동으로 JSON.stringify를 수행하는 saveObject와, 가져올 때 JSON.parse를 수행하는 loadObject라는 다른 메서드를 가지고 있다고 가정해봅시다. 이것이 우리의 Adaptee입니다.

javascript
코드 하이라이팅 중…

SessionStorageHandler를 우리 시스템의 Storage 인터페이스에 맞추기 위해 어댑터를 만듭니다.

javascript
코드 하이라이팅 중…

클라이언트 코드(saveUserData)는 Storage라는 동일한 인터페이스를 사용하므로, 데이터가 localStorage에 저장되는지 sessionStorage에 JSON 형태로 저장되는지 알 필요가 없습니다. 이처럼 어댑터 패턴을 사용하면 서로 다른 인터페이스를 가진 객체들을 손쉽게 통합하여 사용할 수 있습니다.

어댑터 패턴 중요 키워드

  • 호환되지 않는 인터페이스를 연결한다.
  • 기존 코드를 수정하지 않고 재사용한다.
  • 'Wrapper' 클래스라고도 불린다.
  • 상속을 이용하는 클래스 패턴과 위임을 이용하는 인스턴스 패턴이 존재한다.

클래스 어댑터와 인스턴스 어댑터

어댑터 패턴은 구현 방식에 따라 두 종류로 나뉩니다.

  • 클래스 어댑터 (Class Adapter): 상속을 사용합니다. 어댑터가 Target 클래스를 상속하고 Adaptee의 기능을 구현합니다. 앞서 본 SessionStorageAdapter extends Storage 예시가 여기에 해당합니다.
  • 인스턴스 어댑터 (Instance Adapter): 위임(Delegation) 을 사용합니다. 어댑터가 Adaptee의 인스턴스를 내부에 품고, Target의 요청이 들어오면 Adaptee에게 작업을 위임합니다. 이 방식이 더 유연하여 일반적으로 더 많이 사용됩니다.

인스턴스 어댑터 예시: 새로운 로깅 라이브러리 통합

우리 시스템은 간단히 메시지만 받는 log(message) 인터페이스를 사용하는데, 새로 도입할 라이브러리는 타임스탬프까지 함께 받는 logMessage(timestamp, message) 인터페이스를 사용한다고 가정해봅시다.

javascript
코드 하이라이팅 중…

위 예시에서 LoggerAdapter는 어떤 클래스도 extends 하지 않습니다. 대신 생성자에서 NewLogger의 인스턴스를 받아 this.adaptee에 저장(구성)합니다. 클라이언트가 adapter.log()를 호출하면, 어댑터는 실제 로깅 작업을 adaptee에게 '위임'합니다. 이처럼 인스턴스 어댑터는 구성을 사용하므로 더 유연한 구조를 만들 수 있습니다.

정처기 기출 문제

문제를 불러오는 중이에요.
메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)

관련 글

(42개)
제목태그업데이트시험
디자인패턴 정보처리기사 실기 모의 시험
디자인패턴SW설계디자인패턴
2026-07-10응시
추상 팩토리 abstract factory 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2026-10-20-
빌더 builder 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
디자인패턴23개
제목태그업데이트시험
디자인패턴 정보처리기사 실기 모의 시험
디자인패턴SW설계디자인패턴
2026-07-10응시
추상 팩토리 abstract factory 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2026-10-20-
빌더 builder 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
팩토리 메서드 factory method 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-11-03-
프로토타입 prototype 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2026-10-20-
싱글톤 singleton 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
책임 연쇄 chain of responsibility 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-11-03-
커맨드 command 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-09-01-
인터프리터 interpreter 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-09-01-
이터레이터 iterator 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-09-01-
중재자 mediator 패턴 - 타입스크립트 예제
디자인패턴SW설계디자인패턴
2026-10-20-
메멘토 memento 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-10-29-
옵저버 observer 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
상태 state 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-09-01-
전략 strategy 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
템플릿 메서드 template method 패턴 - 타입스크립트 예시
디자인패턴SW설계디자인패턴
2025-09-01-
방문자 Visitor 패턴 - 타입스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
브릿지 bridge 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
컴포지트 composite 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
데코레이터 decorator 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
퍼사드 facade 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
플라이웨이트 flyweight 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-01-
프록시 proxy 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2026-10-20-
SW설계19개
제목태그업데이트시험
릴리스 노트 작성 항목
제품 소프트웨어 패키징SW설계제품 소프트웨어 패키징
2026-06-26-
UI 정보처리기사 실기 모의 시험
UI/UXSW설계UI/UX
2026-05-04응시
애자일(Agile) 방법론
애자일SW설계방법론애자일
2026-10-01-
코딩 컨벤션과 표기법
코딩 스타일SW설계코딩 스타일
2026-10-01-
소프트웨어 비용 산정 기법
비용 산정SW설계비용 산정
2026-10-01-
비기능 요구사항
요구사항SW설계요구사항
2026-10-16-
리팩토링(Refactoring)
리팩토링SW설계리팩토링
2026-10-01-
UI 설계 원칙
UI/UXSW설계UI/UX
2026-10-01-
UI 종류 (CLI·GUI·NUI·OUI·VUI)
UI/UXSW설계UI/UX
2026-10-01-
SW 설계 왕감자 정보처리기사 실기 모의 시험
SW설계SW설계
2025-11-04응시
앱 설계(디자인패턴, 응집도-결합도,객체지향) 정보처리기사 실기 모의 시험
앱설계SW설계앱설계
2025-10-08응시
객체 지향 설계 원칙 - SOLID
객체지향SW설계앱설계객체지향
2026-10-20-
럼바우 객체 모델링 - 객(정)동기
객체지향SW설계앱설계객체지향
2026-10-20-
UML 정보처리기사 실기 모의 시험
UMLSW설계UML
2025-10-08응시
소프트웨어 아키텍처 4+1 뷰 모델
UMLSW설계UML
2025-09-26-
UML 클래스 다이어그램의 6가지 관계
UMLSW설계UML
2026-10-11-
UML 다이어그램
UMLSW설계UML
2026-10-20-
소프트웨어 모듈 응집도와 결합도
응집도/결합도SW설계앱설계응집도/결합도
2026-10-20-
정보처리기사 실기를 위한 디자인 패턴 암기 방법
앱설계SW설계앱설계
2026-10-16-

댓글

댓글을 불러오고 있어요
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999