강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

zzwan님의 프로필 이미지
zzwan

작성한 질문수

김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍

디폴트 메서드의 올바른 사용법

디폴트 메서드를 사용한 리펙토링

작성

·

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 메서드를 정의해 공통 로직을 담고, 특정 전략에서만 필요한 부분을 오버라이드하는 방식으로 해도 괜찮을지 궁금합니다.
또는 인터페이스가 아닌 다른 방식으로 리팩토링하는 것이 더 적절할지 궁금합니다.

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
zzwan님의 프로필 이미지
zzwan

작성한 질문수

질문하기