https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4#
자바 디자인 패턴의 이해 - Gof Design Pattern - 인프런
자바 디자인 패턴 이해하기 강좌 입니다. 여러가지 디자인 패턴들을 알아보며 디자인 패턴에 대한 이해도를 높이도록 도와줍니다. Gof Design Pattern을 자바 언어로 설명한 강의. 의미 있고 쉬운 예제를 준비하려고 노력했습니다. 중급 프로그래밍 언어 Java MVC 온라인 강의 자바 디자인 패턴
www.inflearn.com
어댑터란???
사전적 의미로는 장치 또는 기계의 다른 부분을 연결하는 장치로, 적합하지 않은 두 개의 부분을 전기적 또는 기계적으로 접속하기 위한 장치 또는 도구를 말합니다.
우리가 여행을 갈 때 보통 그 나라에서 사용하는 전기 코드 모양이 조금씩 다 다르기 때문에 여행용 멀티 어댑터를 챙기기 마련입니다.
이와 마찬가지로 어댑터 패턴은 한 클래스의 인터페이스를 사용하고자 하는 다른 인터페이스로 변환할 때 주로 사용하며, 이를 이용하면 인터페이스 호환성이 맞지 않아 같이 쓸 수 없는 클래스를 연관 관계로 연결해 주는 패턴입니다.
(메서드를 바로 호출하지 않고 중간에 어댑터를 거쳐 메소드를 호출한다.)
그렇다면 어댑터를 사용하는 이유는 무엇일까?
바로 기존에 잘 구축되어 있는 것을 가지고 새로운 것을 구현할 때 코드의 낭비를 줄이고, 변형 사용하면 더욱 쉽게 구현할 수 있기 때문입니다.
코드를 보자
기존에 이미 구현된 2배와 절반을 구하는 Math 클래스가 있다고 가정한다. double형을 매개변수로 받아 double형으로 리턴한다.
public class Math {
// 절반
public static double half(double num) {
return num/2;
}
// 2배
public static Double doubled(Double d) {
return d*2;
}
}
어댑터 패턴을 이용해서 이 클래스를 변형해서 사용하고 싶다.
우선 인터페이스만 선언한다.
public interface Adapter {
// ** Math에 있는 알고리즘을 이용해서 원하는거에 맞게 변형 구현은 IMPL에서
// 원하는 기능
public Float twiceOf(Float f);
// 원하는 기능
public Float halfOf(Float f);
}
인터페이스 구현부를 보자.
public class AdapterImpl implements Adapter{
@Override
public Float twiceOf(Float f) {
return (float) Math.doubled(f.doubleValue()).floatValue();
}
@Override
public Float halfOf(Float f) {
return (float) Math.half(f.doubleValue());
}
}
기존에 구현된 메소드는 double형을 받아 double형을 반환하지만 어댑터를 이용해
float형을 받아 float형을 리턴하는 함수를 구현했다.
Main 메소드
public class Main {
public static void main(String[] args) {
Adapter adapter = new AdapterImpl();
System.out.println(adapter.twiceOf(100f));
System.out.println(adapter.halfOf(80f));
}
}
위 코드는 매우 단순한 예시를 들었지만 좀 더 자세한 이해를 위해서 아래 링크를 확인하기 바랍니다.
참고 및 출처
https://niceman.tistory.com/141
Java(자바) 디자인패턴 - 어댑터(Adapter) 패턴 설명 및 예제소스
Java 디자인패턴 - 어댑터(Adapter) 패턴 이번 시간에는 자바 디자인 패턴 중 빈번하게 사용되는 어댑터 패턴(Adapter Pattern)에 대해서 간단한 예제와 함께 설명 드리려 합니다. 어댑터 패턴은 한 클래스의 인터..
niceman.tistory.com
https://gdtbgl93.tistory.com/141
[디자인패턴] 어뎁터 패턴 (Adapter Pattern)
어뎁터 패턴 (Adapter Pattern) : 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 이 패턴을 사용하면 다른 인터페이스와의 호환성 문제를 해결할 수 있다. 여기서 말하는..
gdtbgl93.tistory.com
https://limkydev.tistory.com/78
소스코드
https://github.com/garam-park/java-designpattern
garam-park/java-designpattern
Java Design Patter Example for Coders in korean. Contribute to garam-park/java-designpattern development by creating an account on GitHub.
github.com
'Java > design pattern' 카테고리의 다른 글
[java] 6강 프로토 타입 패턴(Prototype Pattern) (2) | 2020.01.22 |
---|---|
[java] 5강 싱글톤 패턴(singleton pattern) (0) | 2020.01.22 |
[java] 4강 팩토리 메소드 패턴(Factory Pattern) (0) | 2020.01.22 |
[java] 3강 템플릿 메소드 패턴(Template Method Pattern) (0) | 2020.01.13 |
[java] 1강 스트래티지 패턴(strategy pattern) (0) | 2020.01.08 |