Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Action Pattern
- 배치
- Java
- 디자인패턴
- Spring Boot Actuator
- spring batch
- Spring Cloud Netfilx Eureka
- thread
- java 정렬
- Resilinece4j
- spring cloud
- 사가 패턴
- Serial GC
- TypeScript
- 멀티스레드
- Transaction Pattern
- 체인 패턴
- 스레드
- 알고리즘
- 디자인 패턴
- saga pattern
- Parallel Old GC
- 타입스크립트
- zipkin
- JPA
- 스프링 배치
- 생산자 소비자 패턴
- 키클락
- The law of Demeter
- MSA
Archives
- Today
- Total
PSD( Private-Self-Development )
어댑터 패턴 본문
어댑터 패턴?
호환 되지 않는 인터페이스 를 가지는 객체들이 협업할 수 있도록 하는 구조적 디자인 패턴 이다.
- 인터페이스 간 호환성
- 기존 코드의 랩퍼 처리
- 중개 행동
어댑터 패턴의 장점
- 단일 책임 원칙
- 개방 패쇄 원칙
- 클라이언트는 인터페이스를 통해 어댑터 사용 시
기존 클라이언트 코드를 손상하지 않고 새로운 유형의 어댑터 추가 가능 - 느슨한 연결 방식으로 보다 많은 유연성을 확보할 수 있다.
- 프로그램이 실행되는 와중에도 객체 변경 가능
어댑터 패턴의 단점
- 새로운 인터페이스, 클래스 추가로 인한 복잡성 증가
- 어댑터가 새로운 메서드를 재구성하는 경우, 추가 코드가 필요하다.
어댑터 패턴 구현
@Getter
@Setter
public static class TypeA{
private String data;
}
@Getter
@Setter
@AllArgsConstructor
public static class TypeB{
private String data;
}
public interface Adapter{
TypeB convertTypeAToTypeB( TypeA typeA );
}
public static class TypeConverter implements Adapter{
@Override
public TypeB convertTypeAToTypeB(TypeA typeA) {
return new TypeB( typeA.getData() );
}
}
public static void main(String[] args) {
TypeA a = new TypeA();
a.setData("data");
TypeConverter converter = new TypeConverter();
TypeB b = converter.convertTypeAToTypeB(a);
}
언제 사용해야 할까?
- 오래된 레거시 코드 나 라이브러리를 재사용 하는 경우
- 서로 호환되지 않는 인터페이스를 결합하기 위한 경우
참조