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

도토리님의 프로필 이미지
도토리

작성한 질문수

스프링 핵심 원리 - 기본편

새로운 할인 정책 개발

DiscountPolicy discount()의 매개변수 관련 질문

작성

·

194

·

수정됨

0

public interface DiscountPolicy {

    /**
     *
     * @return 할인 금액
     */
    int discount(Member member, int price);
}

discount()의 매개변수 int price는 FixDiscountPolicy에서는 사용되지 않고 RateDiscountPolicy에서만 사용됩니다. 모든 구현 클래스에서 사용되지는 않는 매개변수를 인터페이스에 선언했다는 점이 잘 이해가 되지 않습니다. 모든 구현 클래스에서 사용되지 않는 매개변수를 인터페이스 level에 선언해도 괜찮은 것인지 여쭤보고 싶습니다.

답변 1

0

안녕하세요. 도토리님, 공식 서포터즈 코즈위버입니다.

조건이 단순한 쪽과 복잡한 쪽 모두가 사용할 수 있는 인터페이스를 만들려면 복잡한 쪽으로 맞출수밖에 없습니다. 예제 상황에서 int price 를 생략한다면 RateDiscountPolicy 는 계산을 할 수 없습니다.

파라미터가 지저분 해지는 것을 감내하거나 혹은 Member만 받는 메서드와 Member,int 를 받는 메서드로 분리하거나 해야 하지요. 적절한 타협이 필요한 부분입니다.

감사합니다.

도토리님의 프로필 이미지
도토리

작성한 질문수

질문하기