[Java Design Pattern] 자바 디자인패턴, Adapter 패턴(어댑터 패턴)
- 자바 디자인패턴
- 2019. 9. 5. 14:16
Adapter 패턴
- 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다.
- 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다.
예제
public class Math {
//두배
public static double twoTime(double num) {return num*2;}
//절반
public static double half(double num) {return num/2;}
//강화된 알고리즘으로 빠른 두배 계산.
public static Double doubled(Double d) {return d*2;}
}
- 다음과 같이 이미 구현된 기능이 존재할 때, Math 클래스에 정의된 알고리즘을 이용하여 float 타입을 반환하는 기능을 구현하고자 한다면.
- Math 클래스의 기능은 그대로 사용하되 호환을 맞추어 타입 캐스팅만 해주면 되는 것!
- 어댑터 인터페이스는 다음과 같다.
public interface Adapter {
//원하는기능
public Float twiceOf(Float f);
//원하는기능
public Float halfOf(Float f);
//강화된 알고리즘
public Float doubledOf(Float f);
}
- Adapter 인터페이스를 구현하는 클래스는 다음과 같다.
public class AdapterImpl implements Adapter{
@Override
public Float twiceOf(Float f) {
return Math.doubled(f.doubleValue()).floatValue();
}
@Override
public Float halfOf(Float f) {
System.out.println("절반 함수 호출");
return (float)Math.half(f.doubleValue());
}
@Override
public Float doubledOf(Float f) {
System.out.println("강화된 두배함수 호출");
return new Float(Math.doubled(f.doubleValue()));
}
}
- 구현 클래스는 Math 클래스의 정적메소드를 호출하여 간단한 타입캐스팅만 진행하여 알고리즘은 Math 클래스에 정의된 로직을 따르고, 타입 호환성만 맞추어 제공하는 클래스가 됩니다.
'자바 디자인패턴' 카테고리의 다른 글
[Java Design Pattern] 자바 디자인패턴, Singleton 싱글톤 패턴 (1) | 2022.10.01 |
---|---|
[Java Design Pattern] 자바 디자인패턴, 팩토리 메소드 패턴 (0) | 2019.10.04 |
[Java Design Pattern] 자바 디자인패턴, 템플릿 메소드 패턴 (0) | 2019.09.05 |
[Java Design Pattern] 자바 디자인패턴, Strategy 패턴(전략 패턴) (0) | 2019.09.01 |