기타/리펙토링
entity enum 리펙토링 2
oiNeh
2022. 5. 27. 17:49
이전화
Entity 에서 사용하는 enum -> 리펙토링
코드 목적은 배송 entity에서 배송상태를 보기 위해 enum 타입으로 Status을 선언 하고 next() 메서드로 상태를 변경할수 있도록 하는 코드 입니다. 변경 전 코드 private Status status; private enum Status {..
oineh.tistory.com
피드백 살짝 받고 수정한 코드 입니다.
@Enumerated(STRING)
private Status status;
private interface StatusUse {
String get();
Status next();
}// |
// V
private enum Status implements StatusUse {
ACCEPT {
public String get() { return "결제완료"; }
public Status next() { return INSTRUCT; }
},
INSTRUCT {
public String get() { return "상품준비중"; }
public Status next() { return DEPARTURE; }
},
DEPARTURE {
public String get() { return "배송지시"; }
public Status next() { return FINAL_DELIVERY; }
},
FINAL_DELIVERY {
public String get() { return "배송중"; }
public Status next() { return NONE_TRACKING; }
},
NONE_TRACKING {
public String get() { return "배송완료"; }
public Status next() {
throw new ArrayIndexOutOfBoundsException("이미 완료된 배송입니다.");
}
};
private Status statusNext() {
return this.next();
}
private String getValue() {
return this.get();
}
}
protected Delivery() {
status = Status.ACCEPT;
}
public void next() {
status = status.statusNext();
}
public String getStatus() {
return status.getValue();
}