본문
Adapter Pattern
프로그래밍/디자인패턴 2015. 9. 1. 15:47
반응형
이미 구현되어 있는 코드가 있는데, 둘이 연결 좀 시켜주고 싶을 때가 있죠. 어떤 좋은 메소드가 있는데, 인자로 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를 구현합니다.
홍길동
이순신
아무개
반응형
댓글