외부 API 의존성을 줄여보자
디자인 패턴을 도입하여 DIP 원칙을 준수하는 코드 리팩토링 과정
어떤 문제점일까?
@Service
@RequiredArgsConstructor
public class SearchBookUseCase {
private final KakaoApiClient kakaoApiClient;
public SearchBookResponse search(String query, String sort, int size, int page, String target) {
return SearchBookResponse.from(
kakaoApiClient.searchBooks(query, sort, page, size, target), page);
}
}

어댑터 패턴 (Adapter Pattern)?
리팩토링을 진행해보자.
1. Presentation (Controller)
Query String
설명
Required
Default
2. Business Logic (Service / UseCase)
3. Adapter
응답 형태 변환을 어댑터 내부에서 구현한 이유
4. Data Access (API Client / Third-Party API)
결론

더 나아가서
Last updated

