작성
·
197
1
안녕하세요 선생님, 강의 듣고나서 궁금한 점이 생겨 여쭤봅니다.
int discountPrice = discountService.discount(member, 10000, "fixDiscountPolicy");
int rateDiscountPrice = discountService.discount(member, 20000, "rateDiscountPolicy");
이렇게 호출하게 되면 결국 구현체의 빈 이름을 명시하게 된 것이라고 이해되는데, 추후 빈의 이름이 변경되거나 하는 등의 사항이 발생하면 클라이언트에도 영향이 미치기 때문에 OCP 위반이라고 볼 수 있는건가요 ?? 혹시 그렇다면 , 이건 여러개의 구현체 중 하나를 골라야하는 상황이기 때문에 어쩔 수 없다고 생각하면 되는건가요 ??
답변 1
2
안녕하세요. 재윤님
핵심은 향후 기능의 변경이 있을 때 클라이언트 코드에 변경이 발생하는가 입니다.
여기서 DiscountPolicy를 호출하는 클라이언트 코드가 DiscountService이기 때문에 OCP를 위반하지는 않습니다.
감사합니다.