반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- Linux
- pytorch
- 프로그래밍
- html
- django-debug-toolbar
- 오류
- python
- vscode
- DB
- 웹서버
- css
- 리눅스
- 파이썬
- pyvenv.cfg
- 개발환경
- AI
- 웹프로그래밍
- Design Pattern
- 디자인패턴
- 데이터베이스
- javascript
- csrf_token
- 백엔드
- Django
- MySQL
- 파이토치
- java
- 프론트엔드
- 인공지능
- 디자인 패턴
Archives
- Today
- Total
Shong Studio의 정보 창고
[디자인 패턴] Adapter Pattern (어댑터 패턴) - 직관적인 설명 & 예시 본문
728x90
반응형
Adapter Pattern(어댑터 패턴)이란?
디자인 패턴 중 서로 다른 인터페이스를 가진 클래스들이 함께 작동할 수 있도록 해주는 구조적 디자인 패턴인 "어댑터 패턴"을 알아보도록 하겠습니다.
Adapter 패턴을 콘센트와 플러그로 비유해 적용해보면 이해가 더 쉬울 것 같습니다.
콘센트와 220V 플러그, 110V 플러그를 생각해 볼 수 있습니다.
콘센트 = Client( 220V를 사용하는 대한민국 고객 )
110v 플러그 = Adaptee
220v 플러그 = Target Interface
110v - 220v 어댑터 = Adapter
Adapter Pattern을 사용해야하는 이유는?
Adapter 패턴은 하나의 클래스의 인터페이스를 클라이언트에서 기대하는 다른 인터페이스로 변환합니다.
어댑터를 사용함으로써 인터페이스 호환성 문제 없이 기존 코드를 재사용할 수 있게 됩니다.
Adapter Pattern을 어떻게 사용하는지 알아보자.
어댑터 패턴의 구성 요소
- 타깃(Target) 인터페이스: 클라이언트가 사용하고자 하는 인터페이스입니다.
- 어댑티(Adaptee) 클래스: 어댑터가 감싸서 타깃 인터페이스로 변환하고자 하는 기존 클래스입니다.
- 어댑터(Adapter) 클래스: 어댑티의 인터페이스를 타깃 인터페이스로 변환합니다. 클라이언트는 이 어댑터를 통해 어댑티의 기능을 사용할 수 있습니다.
작동 원리
- 클라이언트는 타깃 인터페이스를 통해 작업을 요청합니다.
- 어댑터는 이 요청을 받아 어댑티의 인터페이스로 변환하는 역할을 합니다.
- 어댑티는 변환된 요청을 처리한 후 결과를 어댑터에게 반환합니다.
- 어댑터는 어댑티로부터 받은 결과를 클라이언트가 기대하는 타깃 인터페이스 형태로 변환하여 반환합니다.
구조
위와 같이 client는 Target Interface만을 바라보면서 처리를 합니다.
다른 Adaptee가 바뀌더라도 Target Interface와 Adapter는 바뀌지 않아도 됩니다.
그저 Adapter의 형식에 맞게 Adaptee를 맞춰서 사용하면 되기 때문에 호환성 문제없이 재사용 할 수 있는 구조적 패턴이 만들어진 것을 확인하실 수 있습니다.
728x90
반응형
'디자인 패턴' 카테고리의 다른 글
[디자인 패턴] Factory Method와 Abstract Factory (1) | 2024.10.14 |
---|---|
[디자인 패턴] Bridge Pattern (브릿지 패턴) - 직관적인 설명 & 예시 (0) | 2024.03.27 |
[디자인 패턴] Iterator Pattern (반복자 패턴) - 직관적인 설명 & 예시 (0) | 2024.03.25 |
[디자인 패턴] State Pattern (상태 패턴) - 직관적인 설명 & 예시 (2) | 2024.03.23 |
[디자인 패턴] Strategy Pattern (전략 패턴) - 직관적인 설명 & 예시 (0) | 2024.03.23 |