와챠의 우당탕탕 코딩 일기장

[JAVA 디자인 패턴] - 2, Adapter 패턴 본문

코딩 일기장/JAVA 디자인 패턴

[JAVA 디자인 패턴] - 2, Adapter 패턴

minWachya 2020. 9. 16. 17:07
반응형

Adapter Pattern

 

Adapter 패턴은 말 그대로 어댑터 역할을 하는 패턴이다.

원래 있는 것을 필요한 형태로 수정해서 재활용하는 역할을 한다.

(내가 가지고 있는 것과 내가 원하는 것 사이를 연결해주는 패턴이다.)

아래와 같은 느낌이다.

  • 내가 가지고 있는 것 <-- 어댑터 --> 내가 원하는 것

 

아래 예제는 내가 갖고 있는 5핀 충전기에 어댑터를 껴서

내가 원하는 C타입 충전기로 만들어 이북 리더기를 충전하는 예제이다.

쉽게 표현하면 아래와 같다.

  • 5핀 충전기 <-- 어댑터 --> C타입 충전기 --> 이북 리더기

 

 

Adapter 패턴에는 총 2가지 종류가 있다.

하나는 상속을 이용한 Adapter 패턴이고,

하나는 위임을 이용한 Adapter 패턴이다.

 

 

1, 상속을 이용한 Adapter 패턴

 

상속을 이용한 Adapter 패턴의 다이어그램

  • Main = 이북 리더기를 충전하는 나

  • Charger_TypeC = C타입 충전기

  • Adapter = 어댑터(내가 원하는 역할을 수행함 : 5핀 충전기를 C타입 충전기로 바꾸기)

  • Charger_microUSB = 5핀 충전기

 

 

 

실행 결과

 

2, 위임을 이용한 Adapter 패턴

 

위임을 이용한 Adapter 패턴의 다이어그램

 

Main 클래스, Charger_microUSB(5핀 충전기) 클래스는 앞과 동일하다.

위임을 위해서 Charger_TypeC를 추상 클래스로 바꾸고, (implements --> extends)

Adapter 클래스는 Charger_microUSB(5핀 충전기)를 포함하도록 수정한다.

 

 

실행 결과

 

그냥 C타입 충전기를 사면 되지 왜 어댑터를 사용하냐...?

우리가 필요한 C타입 충전기는 많이 사용되기도 하고 문제가 전혀 없어서 그래도 되지만,

우리가 필요한 게 모두 좋은 후기가 있는 것은 아니다.

 

만약 우리가 C타입 충전기는 오류가 많고, 5핀 충전기는 안전한 세상에서 산다고 하면

5핀 충전기를 사서 어댑터를 사용하는 것이 훨씬 안전하다.

 

같은 흐름으로 좋은 후기가 많은 비슷한 부품이 있다면(5핀 충전기) 그것을 재이용하는 것이 훨씬 좋다.

 

새로운 C타입 충전기 클래스를 만드는 것보다

이미 만들어져있고, 비슷한 기능을 하는 5핀 충전기 클래스를 재이용하는 것이

훨씬 빠르고 안전하기 때문에 어댑터를 사용하는 것이다.

 

 

언제 사용?

  • 기존의 클래스를 수정하지 않고 필요한 클래스로 만들 때
  • 기존의 클래스가 충분히 테스트되어있을 때

 

 

JAVA 언어로 배우는 디자인 패턴 입문(p 56~66) 참고

반응형
Comments