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 |