[Java] 어댑터 패턴을 예제와 함께 알아보자.

2023. 10. 9. 01:30·Programming Language/Java
반응형

어댑터 패턴이란?

기존의 클래스나 인터페이스를 다른 인터페이스로 변환하는 데 사용되는 구조적인 패턴입니다. 

 

다음과 같은 상황에서 유용합니다.

  1. 두 개의 인터페이스가 호환되지 않을 때
  2. 기존 클래스를 변경하지 않고 새로운 클래스나 인터페이스와 통합할 때 

 

 

어댑터 패턴은 다음과 같은 주요 구성 요소로 구성됩니다

  • Target(대상) 인터페이스: 클라이언트가 사용하려는 인터페이스입니다. 클라이언트 코드는 이 인터페이스를 통해 객체에 접근합니다.
  • Adaptee(적응 대상) 클래스 또는 인터페이스: 기존에 사용하려는 클래스 또는 인터페이스로, 클라이언트가 직접 사용하기 어려운 경우가 있습니다.
  • Adapter(어댑터) 클래스: Target 인터페이스를 구현하고, Adaptee를 감싸서 Target 인터페이스를 따르도록 변환합니다. 클라이언트는 어댑터를 사용하여 Adaptee에 접근합니다.

 

 

 

 

어댑터 패턴이 적용될 수 있는 상황

  • 기존 코드를 수정하지 않고 새로운 인터페이스를 사용해야 할 때
  • 여러 개의 클래스나 라이브러리를 통합하여 사용해야 할 때
  • 호환되지 않는 인터페이스를 통합하려고 할 때.

 

 

// 기존 클래스 (LegacyLibrary)
class LegacyLibrary {
    public void legacyMethod() {
        System.out.println("Legacy method is called.");
    }
}

// 새로운 인터페이스 (NewInterface)
interface NewInterface {
    void newMethod();
}

// 어댑터 클래스
class Adapter implements NewInterface {
    private LegacyLibrary legacy;

    public Adapter(LegacyLibrary legacy) {
        this.legacy = legacy;
    }

    @Override
    public void newMethod() {
        // 어댑터 클래스 내에서 기존 메서드를 호출
        legacy.legacyMethod();
    }
}

// 클라이언트 코드
public class Main {
    public static void main(String[] args) {
        // 기존 라이브러리를 사용하고자 할 때
        LegacyLibrary legacy = new LegacyLibrary();
        legacy.legacyMethod();

        // 어댑터를 통해 새로운 인터페이스를 사용
        NewInterface adapter = new Adapter(legacy);
        adapter.newMethod();
    }
}

 

 

 

 

어댑터 패턴이 적용되면서 생긴 장점

  • 기존 코드의 재사용: 어댑터 패턴을 사용하면 기존 클래스나 인터페이스를 수정하지 않고 새로운 인터페이스나 클래스와 통합할 수 있습니다. 
  • 호환성 확보: 호환되지 않는 두 개의 인터페이스 또는 클래스를 연결하여 상호 작용할 수 있도록 만들어줍니다. 이는 기존 시스템과 새로운 컴포넌트 사이의 호환성 문제를 해결하는 데 도움이 됩니다.
  • 유연성 향상: 어댑터 패턴을 통해 새로운 기능을 추가하거나 변경할 때, 기존 코드를 수정하지 않고도 기능 확장이 가능합니다.

 

 

 

어댑터 패턴이 보호하고자 하는 것

  • 기존 코드 또는 라이브러리의 안정성 유지
  • 기존 코드 변경 최소화
  • 코드 유지 관리 : 기존 코드와 새로운 코드가 각각 독립적으로 관리되며, 변경 시 영향 범위를 제한할 수 있습니다.

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Programming Language > Java' 카테고리의 다른 글

[Java] 퍼사드 패턴을 예제와 함께 알아보자.  (0) 2023.10.09
[Java] 디자인패턴과 안티 패턴을 알아보자.  (0) 2023.10.08
[Java] Enum과 Builder 패턴을 예제와 함께 알아보자.  (0) 2023.10.06
[Java] final 을 사용하는 모든 경우 - 예제와 함께 이해하기  (0) 2023.09.30
[Java] 객체 지향 프로그래밍의 5가지 기본 원칙 SOLID 를 예제와 함께 알아 보자. (2)  (0) 2023.09.29
'Programming Language/Java' 카테고리의 다른 글
  • [Java] 퍼사드 패턴을 예제와 함께 알아보자.
  • [Java] 디자인패턴과 안티 패턴을 알아보자.
  • [Java] Enum과 Builder 패턴을 예제와 함께 알아보자.
  • [Java] final 을 사용하는 모든 경우 - 예제와 함께 이해하기
Giken
Giken
𝐒𝐲𝐬𝐭𝐞𝐦.𝐨𝐮𝐭.𝐩𝐫𝐢𝐧𝐭𝐥𝐧("𝐇𝐞𝐥𝐥𝐨 𝐖𝐨𝐫𝐥𝐝!");
  • Giken
    개발자 기켄
    Giken
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Programming Language (26)
        • C (3)
        • C++ (2)
        • Java (19)
      • Web (4)
      • Database (1)
        • SQL (5)
      • Spring (10)
      • PHP (7)
      • Linux (1)
      • Server (1)
      • Infra (3)
      • Algorithm (74)
        • 백준 (71)
        • 프로그래머스 (0)
      • 프로젝트 (2)
      • Etc (8)
      • 낙서 (5)
  • 블로그 메뉴

    • GitHub
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    SQL
    2753
    SQL고득점키트
    1330
    9498
    2588
    프로그래머스
    윤년
    DB
    백준
    평년
    C
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Giken
[Java] 어댑터 패턴을 예제와 함께 알아보자.
상단으로

티스토리툴바