[JAVA] 어댑터 패턴

2022. 4. 6. 21:23·JAVA
728x90

어댑터 패턴 정의

  • 클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 변환시키는 패턴
  • 인터페이스가 호환성이 맞지않는 클래스의 연관관계를 맺어주게 하는 패턴

어댑터 패턴 특징

  • 기존 클래스의 수정을 전혀 하지 않고 타겟 인터페이스를 통하여 동작할 수 있게 해줌
  • 기존 코드의 변경이 없기 때문에 재사용성이 높음
  • 구성요소를 위해 클래스를 추가시켜야하기 때문에 복잡도가 높아질 수 있음

어댑터 패턴 용도

  • 유지 보수 진행시 기존 로직 변경이 없이 새로운 부분을 추가하는 경우

어댑터 패턴 예시

public interface CardService {

    void pay();
    void payCancel();
}

public class CardAdapter {
    
    private final CardService cardService;

    public CardAdapter(CardService cardService) {
        this.cardService = cardService;
    }

    public void pay() {
        cardService.pay();
    }

    public void payCancel() {
        cardService.payCancel();
    }
}

public class ShCardClient {

    public void shCardPay() {
        System.out.println("신한카드 결제");
    }

    public void shCardCancel() {
        System.out.println("신한카드 결제취소");
    }
}

public class ShCardService implements CardService {

    private final ShCardClient shCardClient;

    public ShCardService(ShCardClient shCardClient) {
        this.shCardClient = shCardClient;
    }

    @Override
    public void pay() {
        shCardClient.shCardPay();
    }

    @Override
    public void payCancel() {
        shCardClient.shCardCancel();
    }

}

public class Main {

  public static void main(String[] args) {
    CardAdapter cardAdapter = new CardAdapter(new ShCardService(new ShCardClient()));
    cardAdapter.pay();
    cardAdapter.payCancel();
  }
}
저작자표시

'JAVA' 카테고리의 다른 글

[JAVA] VAR 타입추론  (0) 2022.04.24
[JAVA] 하이버네이트(HIBERNATE) DDL-AUTO 옵션 정리  (0) 2022.04.19
[JAVA] 비트연산자  (0) 2022.02.06
[JAVA] PriorityQueue  (0) 2022.02.06
[JAVA] 람다표현식  (0) 2022.01.01
'JAVA' 카테고리의 다른 글
  • [JAVA] VAR 타입추론
  • [JAVA] 하이버네이트(HIBERNATE) DDL-AUTO 옵션 정리
  • [JAVA] 비트연산자
  • [JAVA] PriorityQueue
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    이펙티브 코틀린
    splunk
    프로그래머스
    IntelliJ
    엘라스틱서치
    docker
    ElasticSearch
    SQL
    Spring
    AWS
    cleancode
    Elk
    클린코드
    JPA
    이펙티브코틀린
    Kafka
    코틀린
    go
    java
    자바
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[JAVA] 어댑터 패턴
상단으로

티스토리툴바