반응형
어댑터 패턴(Adapter Pattern)은 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와줍니다.
어댑터패턴을 사용하면 호환되지 않는 인터페이스를 사용하는 클라이언트를 그대로 활용할 수 있다. 인터페이스를 변환해주는 어댑터를 만들면 되기 때문이다.
- 어댑터 패턴은 여러 객체지향 원칙을 반영하고 있다. 어댑티(Adaptee)를 새로 바뀐 인터페이스로 감쌀 때는 객체 구성(composition)을 사용한다. 이런 접근법은 어댑티의 모든 서브클래스에 어댑터를 쓸 수 있다는 장점을 가지고 있다.
- 이 패턴은 클라이언트를 특정 구현이 아닌 인터페이스에 연결한다. 서로 다른 클래스로 변환시키는 여러 어댑터를 사용할 수도 있다.
어댑터 패턴에는 두가지 종류가 있다.
- 객체 어댑터
- 객체 구성 (Composiotion)
- 클래스 어댑터
- 다중 상속이 필요함. (자바에서는 불가)
package pattern.adapter;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Spliterator;
import java.util.function.Consumer;
public class EnumerationIterator implements Iterable<Object>{
Enumeration<?> enumeration;
public EnumerationIterator(Enumeration<?> enumeration) {
this.enumeration = enumeration;
}
public boolean hasNext(){
return enumeration.hasMoreElements();
}
public Object next(){
return enumeration.nextElement();
}
public void remove(){
throw new UnsupportedOperationException();
}
@Override
public Iterator<Object> iterator() {
return null;
}
@Override
public void forEach(Consumer<? super Object> action) {
Iterable.super.forEach(action);
}
@Override
public Spliterator<Object> spliterator() {
return Iterable.super.spliterator();
}
}
어댑터 패턴(Adapter Pattern)은 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와줍니다.
어댑터패턴을 사용하면 호환되지 않는 인터페이스를 사용하는 클라이언트를 그대로 활용할 수 있다. 인터페이스를 변환해주는 어댑터를 만들면 되기 때문이다.
- 어댑터 패턴은 여러 객체지향 원칙을 반영하고 있다. 어댑티(Adaptee)를 새로 바뀐 인터페이스로 감쌀 때는 객체 구성(composition)을 사용한다. 이런 접근법은 어댑티의 모든 서브클래스에 어댑터를 쓸 수 있다는 장점을 가지고 있다.
- 이 패턴은 클라이언트를 특정 구현이 아닌 인터페이스에 연결한다. 서로 다른 클래스로 변환시키는 여러 어댑터를 사용할 수도 있다.
어댑터 패턴에는 두가지 종류가 있다.
- 객체 어댑터
- 객체 구성 (Composiotion)
- 클래스 어댑터
- 다중 상속이 필요함. (자바에서는 불가)
package pattern.adapter;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Spliterator;
import java.util.function.Consumer;
public class EnumerationIterator implements Iterable<Object>{
Enumeration<?> enumeration;
public EnumerationIterator(Enumeration<?> enumeration) {
this.enumeration = enumeration;
}
public boolean hasNext(){
return enumeration.hasMoreElements();
}
public Object next(){
return enumeration.nextElement();
}
public void remove(){
throw new UnsupportedOperationException();
}
@Override
public Iterator<Object> iterator() {
return null;
}
@Override
public void forEach(Consumer<? super Object> action) {
Iterable.super.forEach(action);
}
@Override
public Spliterator<Object> spliterator() {
return Iterable.super.spliterator();
}
}
반응형
'Delvelopment > DesignPattern' 카테고리의 다른 글
[Design Pattern] 팩토리 메소드 패턴 (Factory Method Pattern) (0) | 2022.07.03 |
---|---|
[Design Pattern] 퍼사드 패턴 (Facade Pattern) (0) | 2022.07.03 |
[Design Pattern] 커맨드 패턴 (Command Pattern) (0) | 2022.07.03 |
[Design Pattern] 템플릿 메서드 패턴 (Template Method Pattern) (0) | 2022.07.03 |
[Design Pattern] 싱글톤 패턴 (Singleton Pattern) (0) | 2022.07.03 |
댓글