Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

재훈재훈

(OODP) Adapter Pattern 본문

Computer Engineering/JAVA

(OODP) Adapter Pattern

jaehoonx2 2018. 4. 19. 17:20


어댑터 패턴 (Adapter Pattern)


그림의 설명을 보면

"한 클래스의 인터페이스를 클라이언트에서 사용하려 하는 다른 인터페이스로 변환한다. 

어댑터 패턴은 인터페이스가 호환이 되지 않아서 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있게 한다."

라고 되어 있다.



너무 말이 어렵고 추상적이다.

어댑터 패턴은 쉽게 생각해서 돼지코를 떠올리면 된다.





한국에서 사용하는 전자기기(220V)를 일본에서는 사용하지 못한다.

110V짜리 일자 모양의 소켓이기 때문이다.

이를 해결하기 위해 우리는 동그란 모양 플러그를 일자 모양으로 바꿔주는 돼지코를 끼워주어야 한다.


어댑터도 이와 마찬가지이다.

한 클래스의 인터페이스(220V)를 사용하고자 하는 다른 인터페이스(110V)로 변환해준다.

원래대로라면 호환성이 없어서 함께 사용할 수 없는 클래스들을 동작하게 만들어준다.




한국과 일본의 플러그와 소켓 클래스이다.


public class KoreanSocket {

    public void plugIn(KoreanPlug plug) {
        plug.giveElectricity();
    }
}
public interface KoreanPlug {

    public void giveElectricity();
}
public class JapaneseSocket {

    public void plugIn(JapanesePlug plug) {
        plug.provideElectricity();
    }
}
public interface JapanesePlug {

    public void provideElectricity();
}

이 코드를 보면 각 나라의 플러그는 각각의 소켓에만 들어갈 수 있다.

한국 플러그로는 일본의 소켓에 꽂을 수 없다.



그럼 이제 한국 플러그를 일본 소켓에 꽂을 수 있게 만드는 110V 돼지코 어댑터 코드를 보겠다.


public class KoreanToJapaneseAdapter implements JapanesePlug {

    private KoreanPlug plug;

    public KoreanToJapaneseAdapter(KoreanPlug plug) {
        this.plug = plug;
    }

    @Override
    public void provideElectricity() {
        plug.giveElectricity();
    }

}




이 어댑터는 아래처럼 활용된다.


KoreanPlug plug_kr  =  ......                                                                      // 한국 플러그

JapaneseSocket socket_jp  =  new  JapaneseSocket();                               // 일본 소켓

JapanesePlug adaptor  =  new  KoreanToJapaneseAdapter(plug_kr);           // 한국 플러그를 어댑터에 꽂고

socket_jp . plugIn(adaptor);                                                                     // 어댑터를 일본 소켓에 꽂기


adaptor.provideElectrocity();                                                                    // 어댑터를 통한 전기 공급




이렇게 되면 KoreanPlug는 KoreanToJapaneseAdapter를 통해서 JapaneseSocket을 사용할 수 있다.




'Computer Engineering > JAVA' 카테고리의 다른 글

쓰레드  (0) 2018.04.07
Java I/O  (0) 2018.04.07
Java Collections  (0) 2018.04.07
OODP - Strategy Pattern  (0) 2018.04.07
OODP - Singleton Pattern  (0) 2018.04.07