작성
·
10
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요!
최근 프로젝트를 진행하며 코드 구조를 정리하는 과정에서 궁금한 점이 생겨 질문드립니다.
PostStrategy
인터페이스를 만들고 3개의 구현체를 두어, 홈 피드에 게시글을 조회하는 전략을 분리했습니다.
인터페이스에는 homePosts()
관련 메서드가 여러 버전으로 존재합니다. (homePosts
, homePostsV2
, homePostsV3
등)
public interface PostStrategy {
boolean isExecutable(UserContext userContext);
boolean requiresAuthentication();
PostSummaryResponse homePosts(int size, Long cursorPostId, String username);
PostSummaryResponse homePostsV2(int size, Long cursorPostId, String username);
PostSummaryResponse homePostsV3(int size, Long cursorPostId, UserContext userContext);
...
}
구현체 중 ForYouPostStrategy
만 V2와 V3를 실제로 사용하고 있고, 나머지 구현체에서는 homePosts()
만 호출하는 식으로 처리하고 있습니다. 처음엔 단순했는데 버전이 늘어나면서 인터페이스가 점점 커지고 불필요한 코드가 많이 생긴 상황입니다.
PostStrategy
인터페이스에 default 메서드를 정의해 공통 로직을 담고, 특정 전략에서만 필요한 부분을 오버라이드하는 방식으로 해도 괜찮을지 궁금합니다.
또는 인터페이스가 아닌 다른 방식으로 리팩토링하는 것이 더 적절할지 궁금합니다.
답변