JAVA

[JAVA] 어댑터 패턴

집한구석 2022. 4. 6. 21:23
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