작성
·
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 를 받는 메서드로 분리하거나 해야 하지요. 적절한 타협이 필요한 부분입니다.
감사합니다.