Java 디자인 패턴-10.Adapter
(Java 디자인 패턴 스터디 모집 중 : https://github.com/bluedskim/javaDesignPatterns)
Adapter(적응) 패턴
(출처:https://educationinaction.org/water-rocks-vocabulary/adaptation)
해결하려는 문제
- 인터페이스의 불일치 해결.
용도/목적
- 구조적Structural 패턴
- 어떤 인터페이스를 다른 목적의 인터페이스로 만드는 패턴.
- 클라이언트 소스 수정이 불가능한 경우 유용하다.
구성요소
- adapter(wrapper) : adaptee의 interface를 클라이언트가 원하는 target의 인터페이스로 변경하는 객체
- adaptee : 변경대상이 되는 객체
- target : 클라이언트가 원하는 인터페이스를 가지고 있는 객체
- 클라이언트 : target으로 변경된 adaptee를 사용하는 객체
고려사항
다른 유사한 패턴과 비교해보자 https://en.wikipedia.org/wiki/Adapter_pattern#Usage
- Decorator : 원래의 소스를 감싸는 방식으로 인터페이스에 동적으로 기능을 추가한다.
- Delegation : 상속을 통한 조합
- Facade : 단순화된 인터페이스 제공
클래스 다이어그램
소스
- adapter : LightningToMicroUsbAdapter.java
- adaptee : LightningPhone.java
- target : MicroUsbPhone.java
- 클라이언트 : LightningToMicroUsbAdapterTest.java
