본문 바로가기

프로젝트

등급 클래스 - 생각/고민

import java.util.*;

// 등급 인터페이스와 구현체
interface Grade {
    int getDiscountRate();
    String getGradeName();
}

class NormalGrade implements Grade {
    public int getDiscountRate() { return 0; }
    public String getGradeName() { return "NORMAL"; }
}

class VipGrade implements Grade {
    public int getDiscountRate() { return 20; }
    public String getGradeName() { return "VIP"; }
}

 

그보다 enum 좋지 않을까?

 

등급 처럼 고정된 값이라던가!! 복잡한 로직보다 가독성있고 통일된 느낌

 

public enum Grade {
    NORMAL("NORMAL", 0),
    VIP("VIP", 20);

    private final String name;
    private final int discountRate;

    Grade(String name, int discountRate) {
        this.name = name;
        this.discountRate = discountRate;
    }

    public int getDiscountRate() {
        return discountRate;
    }

    public String getGradeName() {
        return name;
    }
}