1. Adapter Pattern
연관성 없는 두 객체를 묶어서 사용한다.
2. 학습 목표
알고리즘을 요구사항에 맞춰 사용할 수 있다.
2.1. 의미
Adapter는 사전적의미로는 기계 기구등을 다목적으로 사용하기 위한 부가 기구라고 할 수 있습니다.
2.2. 기본 설계
2.3. 요구사항 1
두 수에 대한 다음 연산을 수행하는 객체를 만들기
- 수의 두 배의 수를 반환: twiceOf(Float):Float
- 수의 half의 수를 반환: halfOf(Float):Float
구현 객체의 이름은 Adapter
Math클래스에서 두배와 절반을 구하는 함수는 이미 구현되어 있습니다.
즉, 어뎁터패턴을 사용하는이유는 미리주어진함수를 어뎁터에서 사용할 수 없기때문에 해당로직을 변경해야하므로 Adapter 를 사용한다.
2.4. 요구사항 2
Math 클래스에 새롭게 두 배를 구할 수 있는 함수가 추가된다.
- 새로 구현된 알고리즘을 이용하도록 프로그램을 변경하시오.
- 절반을 구하는 기능에서 로그를 찍는 기능을 추가하시오.
3. Code
위의 요구사항처럼 타입의 값과 요구되는 값이 변경되는 경우 Adapter 패턴을 이용하면 의존성을 줄이고 유지보수의 확장성을 올릴 수 있습니다.
즉, 공통 클래스로 사용되던 메소드를 변경해야되는 요구사항이 발생하게 된다면 Adapter, Main을 수정하지 않아도 구현체 부분만 변경해서 해당 요구사항들을 Adapter 패턴으로 적용할 수 있습니다.
main class
1 | package AdapterPattern; |
math class
1 | package AdapterPattern; |
adapter interface
1 | package AdapterPattern; |
adapter Implements class
1 | package AdapterPattern; |