리팩토링 ver1


<aside> 🌎

설명


예제


<aside> 🧮

package enumm;

public class ClassGrade {

    public static final ClassGrade BASIC = new ClassGrade(10);
    public static final ClassGrade GOLD = new ClassGrade(20);
    public static final ClassGrade DIAMOND = new ClassGrade(30);

    private final int discountPercent;

    private ClassGrade(int discountPercent) {
        this.discountPercent = discountPercent;
    }

    public int getDiscountPercen() {
        return discountPercent;
    }
}

설명
- ClassGrade에 할인율(discountPercent) 필드 추가
- 조회 메서드 추가
----------------------
package enumm;

public class DiscountSerivce {

    public int discount(ClassGrade classGrade, int price) {
        return price * classGrade.getDiscountPercen() / 100;
    }
}

설명
IF문 없애고 간략화
--------------------
package enumm;

public class ClassGradeMain1 {

    public static void main(String[] args) {
        int price = 10000;

        DiscountSerivce discountService = new DiscountSerivce();
        int basic = discountService.discount(ClassGrade.BASIC, price);
        int gold = discountService.discount(ClassGrade.GOLD, price);
        int diamond = discountService.discount(ClassGrade.DIAMOND, price);

        System.out.println("BASIC 등급의 할인 금액 : " + basic);
        System.out.println("GOLD 등급의 할인 금액 : " + gold);
        System.out.println("DIAMOND 등급의 할인 금액 : " + diamond);
    }
}

출력
BASIC 등급의 할인 금액 : 1000
GOLD 등급의 할인 금액 : 2000
DIAMOND 등급의 할인 금액 : 3000

</aside>