SlideShare a Scribd company logo
1 of 10
어댑터 패턴
Bucketplace 신부설
bsscco@gmail.com
전압 변환기
소켓
이미 고객이 원하는
기능을 담고있는 기
존 클래스가 있어.
이걸 사용할래.
(=Adaptee)
고객이 원하는 인터
페이스
(=Target)
기존 클래스를 고객이 원
하는 인터페이스 형태를
갖도록 만들 거야.
그러기 위해 어댑터 클래
스를 사용해서 기존 클래
스를 감쌀 거야.
(=Adapter)
클래스 어댑터
is a 관계로 어댑터 구조를 만들어보자.
기존 클래스를 고객이 원
하는 인터페이스 형태를
갖도록 만들 거야.
고객이 원하는 인터
페이스
(=Target)
기존 클래스가 있어.
이걸 사용할래.
(=Adaptee)
어댑터가 인터
페이스를 구현
어댑터가
어댑티를
구현
고객쪽 코드에서
인터페이스 구현체를 사용한
다.
객체 어댑터
has a 관계로 어댑터 구조를 만들어보자.
기존 클래스를 고객이 원
하는 인터페이스 형태를
갖도록 만들 거야.
고객이 원하는 인터
페이스
(=Target)
기존 클래스가 있어.
이걸 사용할래.
(=Adaptee)어댑터가 인터
페이스를 구현 어댑터가
어댑티를
가진다.
고객쪽 코드에서
인터페이스 구현체를 사용한
다.
솔직한 후기 - 왜 쓰나요?
어댑터 패턴은 클래스 제공자가 기존의 클래스를 클래스 사용자가 원하는 사용방
법에 맞춰서 제공하려고 할 때 씁니다.
제 경우 클래스 제공자도 저고, 클래스 사용자도 저이기 때문에 그 클래스 사용법에
대해 잘 압니다. 그래서 이런 경우엔 어댑터 패턴을 적용하지 않아도 됩니다.
솔직한 후기 - 왜 쓰나요?
다만, GA와 페북Analytics 같은 비슷한 서드파티 라이브러리를 사용할 때 라이브러
리마다 일관된 사용방법(init(), release(), logEvent())을 유지하기 위해 라이브러리
마다 어댑터 패턴을 적용합니다. 인터페이스까지 정의해서 강제하진 않으므로 완
전한 어댑터 패턴이라고 보긴 어렵습니다. 저는 이런 어댑터 클래스를 Wrapper 클
래스라고도 부릅니다.
장점1. 협업할 때 다른 개발자가 서드파티 라이브러리 한 개의 인터페이스만 이해
하면, 다른 서드파티 라이브러리가 쓰인 코드를 읽을 때 바로 이해할 수 있다.
장점2. 특정 작업을 삽입하고 싶을 때 어댑터 클래스가 인터셉터 역할을 해준다. 이
장점이 매우 큽니다. 실제로 대개 라이브러리는 가공을 해서 사용하게 되는데 가공
코드를 어댑터 클래스에 넣어두면 관심사의 분리, 캡슐화, 쉬운 수정의 이점을 얻습
니다.
잘못 설명한 부분이나 부족한 부분에 대
해 보완해주실 분은 나눠주세요.

More Related Content

More from Booseol Shin

More from Booseol Shin (9)

2017-07-10 브릿지 패턴
2017-07-10 브릿지 패턴2017-07-10 브릿지 패턴
2017-07-10 브릿지 패턴
 
2015 deploy gate 시작 가이드
2015   deploy gate 시작 가이드2015   deploy gate 시작 가이드
2015 deploy gate 시작 가이드
 
파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리
 
HTML&CSS 태그, 속성, 셀렉터
HTML&CSS 태그, 속성, 셀렉터HTML&CSS 태그, 속성, 셀렉터
HTML&CSS 태그, 속성, 셀렉터
 
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (2)
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (2)안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (2)
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (2)
 
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (1)
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (1)안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (1)
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (1)
 
초보 블로그 쇼핑몰 만들기
초보 블로그 쇼핑몰 만들기초보 블로그 쇼핑몰 만들기
초보 블로그 쇼핑몰 만들기
 
머터리얼 디자인 문서 개인적인 번역
머터리얼 디자인 문서 개인적인 번역머터리얼 디자인 문서 개인적인 번역
머터리얼 디자인 문서 개인적인 번역
 
안드로이드에서 플러리를 쉽게 사용하기
안드로이드에서 플러리를 쉽게 사용하기안드로이드에서 플러리를 쉽게 사용하기
안드로이드에서 플러리를 쉽게 사용하기
 

2017-07-10 어댑터 패턴

  • 3. 이미 고객이 원하는 기능을 담고있는 기 존 클래스가 있어. 이걸 사용할래. (=Adaptee) 고객이 원하는 인터 페이스 (=Target) 기존 클래스를 고객이 원 하는 인터페이스 형태를 갖도록 만들 거야. 그러기 위해 어댑터 클래 스를 사용해서 기존 클래 스를 감쌀 거야. (=Adapter)
  • 4. 클래스 어댑터 is a 관계로 어댑터 구조를 만들어보자.
  • 5. 기존 클래스를 고객이 원 하는 인터페이스 형태를 갖도록 만들 거야. 고객이 원하는 인터 페이스 (=Target) 기존 클래스가 있어. 이걸 사용할래. (=Adaptee) 어댑터가 인터 페이스를 구현 어댑터가 어댑티를 구현 고객쪽 코드에서 인터페이스 구현체를 사용한 다.
  • 6. 객체 어댑터 has a 관계로 어댑터 구조를 만들어보자.
  • 7. 기존 클래스를 고객이 원 하는 인터페이스 형태를 갖도록 만들 거야. 고객이 원하는 인터 페이스 (=Target) 기존 클래스가 있어. 이걸 사용할래. (=Adaptee)어댑터가 인터 페이스를 구현 어댑터가 어댑티를 가진다. 고객쪽 코드에서 인터페이스 구현체를 사용한 다.
  • 8. 솔직한 후기 - 왜 쓰나요? 어댑터 패턴은 클래스 제공자가 기존의 클래스를 클래스 사용자가 원하는 사용방 법에 맞춰서 제공하려고 할 때 씁니다. 제 경우 클래스 제공자도 저고, 클래스 사용자도 저이기 때문에 그 클래스 사용법에 대해 잘 압니다. 그래서 이런 경우엔 어댑터 패턴을 적용하지 않아도 됩니다.
  • 9. 솔직한 후기 - 왜 쓰나요? 다만, GA와 페북Analytics 같은 비슷한 서드파티 라이브러리를 사용할 때 라이브러 리마다 일관된 사용방법(init(), release(), logEvent())을 유지하기 위해 라이브러리 마다 어댑터 패턴을 적용합니다. 인터페이스까지 정의해서 강제하진 않으므로 완 전한 어댑터 패턴이라고 보긴 어렵습니다. 저는 이런 어댑터 클래스를 Wrapper 클 래스라고도 부릅니다. 장점1. 협업할 때 다른 개발자가 서드파티 라이브러리 한 개의 인터페이스만 이해 하면, 다른 서드파티 라이브러리가 쓰인 코드를 읽을 때 바로 이해할 수 있다. 장점2. 특정 작업을 삽입하고 싶을 때 어댑터 클래스가 인터셉터 역할을 해준다. 이 장점이 매우 큽니다. 실제로 대개 라이브러리는 가공을 해서 사용하게 되는데 가공 코드를 어댑터 클래스에 넣어두면 관심사의 분리, 캡슐화, 쉬운 수정의 이점을 얻습 니다.
  • 10. 잘못 설명한 부분이나 부족한 부분에 대 해 보완해주실 분은 나눠주세요.