Adapter
어댑터는 다목적 사용을 위해서 사용합니다. 즉 인터페이스를 이용합니다.
예를 들어서 Math 라이브러리가 타입이 float일 경우 double로 사용하려면 변경로직이 필요하겠죠.
이럴 때 다목적으로 사용하기 위해서 Adapter 인터페이스를 만들어줍니다.
요구사항
- 두 수에 대한 다음 연산을 수행하는 객체를 만들자.
- 수의 두 배를 반환: twiceOf(Float):Float
- 수의 반(1/2)를 반환: halfOf(Float):Float
- 구현 객체 이름은 Adapter
- Math에 메서드는 이미 구현되어있음.
우선 Math를 보면 아래와 같이 이미 구현이 되어있습니다. double형이죠.
Math.java
package com.jeongchan.adapte;
public class Math {
//두배
public static double twoTime(double num) {
return 2*num;
}
//절반
public static double halfnum(double num) {
return num/2;
}
//강화된 알고리즘
public static Double doubled(Double d) {
return d*2;
}
}
이제 어댑터(Adapter)를 만들어줍시다. 인터페이스입니다.
Adapter.java
package com.jeongchan.adapte;
public interface Adapter {
//원하는 기능
public Float twiceOf(Float f);
public Float halfOf(Float f);
}
이를 구현하는
AdapterImpl.java
package com.jeongchan.adapte;
public class AdapterImpl implements Adapter {
@Override
public Float twiceOf(Float f) {
// TODO Auto-generated method stub
//변경 로직이 필요
// return (float)Math.twoTime(f.doubleValue());
return Math.doubled(f.doubleValue()).floatValue();
}
@Override
public Float halfOf(Float f) {
// TODO Auto-generated method stub
//로그는 Math가 아닌 여기에
System.out.println("절반함수 호출");
return (float)Math.halfnum(f.doubleValue());
}
}
return에서 변경사항이 있으면 해당 로직을 바꿔주기만 하면 다용도로 사용가능합니다.
Main.java
package com.jeongchan.adapte;
public class Main {
public static void main(String[] args) {
Adapter adapter = new AdapterImpl();
System.out.println(adapter.twiceOf(100f));
System.out.println(adapter.halfOf(88f));
}
}
200.0
절반함수 호출
44.0
'프로그래밍 언어 > Java' 카테고리의 다른 글
디자인패턴 - 전략패턴 (0) | 2019.08.23 |
---|---|
디자인패턴-팩토리메소드 (0) | 2019.08.23 |
디자인 패턴- Template Method Pattern (0) | 2019.08.21 |
자바 공부(취업 준비) (0) | 2019.07.29 |
Java - 람다 (0) | 2019.07.28 |