강의

멘토링

로드맵

Inflearn brand logo image

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

생각하는자님의 프로필 이미지
생각하는자

작성한 질문수

스프링 핵심 원리 - 기본편

새로운 할인 정책 개발

discountPolicy 클래스에 대해서 질문

해결된 질문

작성

·

37

·

수정됨

0

=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
할인 정책에 클래스 에 대해서 궁금증이 생겨서 질문을 드립니다.

동영상에서 영한님은 인터페이스를 통해서 fix, rate를 통해서 할인율을 분리 하는 것을 알 수 있었습니다.

여기서 질문이 생깁니다.

전에 중급1편에서 enum을(회원 등급을 만들 때 이넘이 생각나서 pdf를 찾아 보았습니다.)배울 때 할인율 넣은 게 있더라고요.

image.png

(pdf 파일이 최신 버전이 아닐 수 있음)

이넘에 할인율 을 넣기, 아니면 인터페이스를 통해 할인율 넣는 거에 따라 코드가 많이 바뀔 것 같은데요.
이런 경우 어떤 게 나은지 알려 주실 수 있으신가요?

답변 부탁 드립니다.

 

 수정1 : "이런 경우"가 2개가 있어서 한개 로 수정.

 

답변 1

1

안녕하세요, 인프런 AI 인턴입니다. 생각하는자님.

스프링의 할인 정책 구현에서 인터페이스와 이넘(enum)을 활용하는 방법에 대한 질문을 주셨습니다. 다양한 방법으로 구현할 수 있지만, 상황에 따라 적절한 방식의 선택이 달라질 수 있습니다.

  1. 인터페이스 사용한 할인 정책:

    • 장점: 인터페이스를 사용하여 다양한 할인 정책을 구현체로 만들어 확장성을 높일 수 있습니다. 예를 들어, 할인 정책이 바뀌거나 추가되어도 구현체를 새로 만들기만 하면 되므로 유연한 구조입니다.
    • 사용 사례: 다양한 할인 방식(고정, 비율 등)을 구현해야 하거나, 할인 정책의 로직이 복잡해질 경우 유리합니다. 이는 정책 간의 분리가 잘 이루어져 있어 유지보수가 용이합니다.
  2. 이넘(enum) 사용한 할인 정책:

    • 장점: 이넘을 사용하면 할인 정책을 하나의 타입으로 명확하게 정의할 수 있어 코드가 더 간단하고 명확해집니다. 특히 정책의 수가 고정되고 간단한 경우 유리합니다.
    • 사용 사례: 할인 정책이 고정적이거나, 간단하게 구현할 수 있을 때 사용하면 좋습니다. 모든 할인율이 이넘에 정의되어 있어 직관적일 수 있습니다.

두 방법 중 어떤 것이 더 나은지에 대해선 프로젝트의 요구사항에 따라 다를 수 있습니다. 만약 할인 정책이 자주 바뀌고 확장성이 필요하다면 인터페이스를 통한 디자인 패턴이 좋습니다. 반면, 할인 정책이 일정하고 변경 가능성이 적다면 이넘을 활용하는 것도 좋은 벤치마크가 될 수 있습니다.

관련해서 유사한 질문과 답변을 참고하실 수 있는 링크들을 공유드립니다:
- Discount 메서드에서 질문이 있습니다. - 할인 정책 구현 시 인터페이스와 이넘을 어떻게 활용할 수 있는지 대한 설명.
- rateDiscountPolicy를 DiscountPolicy타입으로하는게 좋다 - 인터페이스와 구현체 디자인의 장단점을 설명.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

생각하는자님의 프로필 이미지
생각하는자

작성한 질문수

질문하기