Adapter Pattern에 대해 알아보기 전, Design Pattern(디자인 패턴)에 대해 간단하게 설명드리겠습니다.
디자인 패턴이란 소프트웨어의 재사용성, 호환성, 유지보수성을 보장하기 위한 설계 기법이며 아이디어입니다. 필수적인 요소는 아니지만, 아는 것과 모르는 것은 차이가 크다고 생각합니다 (필요에 따라 가져다 쓸 수 있어야 된다고 생각합니다)
Adapter Pattern
- 호환되지 않는 인터페이스들을 연결하는 디자인 패턴
- 기존의 클래스를 수정하지 않고도 특정 인터페이스를 필요로 하는 코드에서 사용 가능
- 서로 다른 인터페이스를 가진 클래스들이 상호작용할 수 있기에 코드의 재사용성 증대
Component
- Target(타겟): Client가 직접적으로 호출하는 interface
- Adaptee(어댑티): 아직 Target과 호환되지 않은 기존 클래스(or interface)
- Client(클라이언트): 특정 작업을 요청하는 클래스
- Adapter(어댑터): Target interface의 구현체
이제 코드를 예시로 들어서 설명드리겠습니다.
// 타켓 인터페이스
public interface Target {
void doSomething();
}
//실제 사용하려는 클래스
public class Adaptee {
public void performAction() {
System.out.println("Action performed!");
}
}
public class Adapter implements Target {
private final Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void doSomething() {
adaptee.performAction();
}
}
public class Client {
public static void main(String[] args) {
Adaptee adaptee = new Adaptee();
Target target = new Adapter(adaptee);
target.doSomething();
}
}
실제 사용하려면 Adaptee 클래스를 직접적으로 호출하지 않았음에도 불구하고 Target 인터페이스를 통해 performAction 메서드를 호출할 수 있게 되었습니다.
장점
- 기존의 사용하려는 클래스를 수정하지 않고도 클라이언트에서 새로운 인터페이스를 사용할 수 있습니다(코드 재사용성, 및 중복성 감소, 클래스간 결합도 감소)
단점
- 어댑터 클래스를 추가로 작성해야 하기 때문에, 코드의 복잡성 증가 및 데이터 변환 과정에서의 오버헤드 발생
오늘은 간단하게 어댑터 패턴에 대해 알아보았습니다. 다음에는 싱글톤 패턴, 템플릿 메서드 패턴에 대해서도 알아보도록 하겠습니다.
<참고 자료>
https://yozm.wishket.com/magazine/detail/2077/
'Java > Design Pattern' 카테고리의 다른 글
[Design Pattern] Template Method Pattern(템플릿 메소드 패턴)이란 (0) | 2023.11.06 |
---|---|
[Design Pattern] Singleton Pattern(싱글톤 패턴)이란 (1) | 2023.11.03 |