
이 부분의 grade = EnumGrade.Bronze 에 할인율 5%를 적용하는것을 Enum클래스에 그대로 적용할 수 있다.
이제 grade를 모두 정리했기 때문에 else 상황에서 발생할 "할인이 없습니다." 문구는 필요없다. (사실 저건 오류방지용이였다.)
만약 할인이 없는 그레이드를 만들려면 BRONZE 보다 아래단계를 추가해야겠지...
Enum클래스도 매서드를 만들 수 있기 때문에 , 맨아래 리턴값도 Enum클래스에서 한번에 연산해버릴 수 있다.
해서 아래와 같이 줄여버렸다.
package thisjavaexam.enumtest.enumis;
public class DiscountGrade {
// 메인클래스에서 넘어올 가격만 받아서 할인율은 EnumGrade 클래스로 토스한다.
public int discountPercent(EnumGrade grade, int price) {
return grade.finalPrice(price);
}
}
대신 Enum클래스가 좀늘었다.
package thisjavaexam.enumtest.enumis;
public enum EnumGrade {
//각각 퍼센트를 직접 기입할 수 있다.
BRONZE(5),
SILVER(10),
GOLD(15),
DIAMOND(20);
//할인율 변수를 선언하는데 final 이기에 앞으로 들어올 값을 위해 초기화 하지 않았다.
private final int discountPercent;
//이제 이 클래스의 생성자를 만들고
EnumGrade(int discountPercent) {
this.discountPercent = discountPercent;
}
//getter를 통해서 외부에서 접근하도록 한다.
public int getDiscountPercent() {
return discountPercent;
}
//최종 결과 값의 할인율을 계산해서 리턴한다.
public int finalPrice(int price) {
return price * discountPercent / 100;
}
}
메인 클래스는 그냥 그대로 두었다.
package thisjavaexam.enumtest.enumis;
public class GradePriceMain {
public static void main(String[] args) {
int price = 20000;
DiscountGrade discountGrade = new DiscountGrade();
int bronze = discountGrade.discountPercent(EnumGrade.BRONZE, price);
int silver = discountGrade.discountPercent(EnumGrade.SILVER, price);
int gold = discountGrade.discountPercent(EnumGrade.GOLD, price);
int diamond = discountGrade.discountPercent(EnumGrade.DIAMOND, price);
System.out.println("BRONZE 의 할인율 5% 적용금액 : " + bronze);
System.out.println("SILVER 의 할인율 10% 적용금액 : " + silver);
System.out.println("GOLD 의 할인율 15% 적용금액 : " + gold);
System.out.println("DIAMOND 의 할인율 20% 적용금액 : " + diamond);
}
}
이렇게 해도 정상적으로 잘 동작한다

'Java_library > Enumeration' 카테고리의 다른 글
| (Java_library) Enum을 사용하는이유_enum사용 후 리팩토링2 (0) | 2025.05.06 |
|---|---|
| (Java_library) Enum을 사용하는이유_enum사용2 (0) | 2025.05.06 |
| (Java_library) Enum을 사용하는이유_enum사용1 (0) | 2025.05.06 |
| (Java_library) Enum을 사용하는이유_enum사용전2 (0) | 2025.05.06 |
| (Java_library) Enum을 사용하는이유_enum사용전1 (0) | 2025.05.06 |