본문

Adapter Pattern

반응형

 

이미지 출처: fmoralesdev.com

 

이미 구현되어 있는 코드가 있는데, 둘이 연결 좀 시켜주고 싶을 때가 있죠. 어떤 좋은 메소드가 있는데, 인자로 A라는 형식을 받습니다. 하지만 이미 구현되어 있는 코드에는 B라는 형식으로 구현되어 있습니다. 이럴 때, B를 A의 형식으로 바꿔주면 좋은 메소드를 써먹을 수 있습니다. 즉, Adapter 패턴은 임의의 오브젝트를 casting이 가능하도록 다른 클래스의 형태로 변환시켜주는 것 입니다.

 

💡 IteratorToEnumeration.java

import java.util.Enumeration;
import java.util.Iterator;

public class IteratorToEnumeration implements Enumeration<String> {
    private Iterator<String> iter;

    public IteratorToEnumeration(Iterator<String> iter) {
        this.iter = iter;
    }

    public boolean hasMoreElements() {
        return iter.hasNext();
    }

    public String nextElement() {
        return iter.next();
    }
}
 

 

 

💡 Main.java

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

public class Main {
    public static void goodMethod(Enumeration<String> enu) {
        while (enu.hasMoreElements()) {
            System.out.println(enu.nextElement());
        }
    }

    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("홍길동");
        list.add("이순신");
        list.add("아무개");
        Enumeration<String> ite = new IteratorToEnumeration(list.iterator());
        Main.goodMethod(ite);
    }
}
 

💡 결과

IteratorToEnumeration 클래스는 Iterator를 받아서 Enumeration으로 변경합니다.

즉, AtoB의 형태를 가지는 Adapter는 A를 멤버변수로 가지고 B를 구현합니다. 

홍길동
이순신
아무개
 

 

반응형

공유

댓글