public enum TableStatus {
Y("1", true),
N("0", false);
private String table1Value;
private boolean table2Value;
TableStatus(String table1Value, boolean table2Value) {
this.table1Value = table1Value;
this.table2Value = table2Value;
}
}
Enum의 값 "Y", "N"에 따라 table1Value, table2Value의 값을 반환해주는 별도의 메소드를 선언하는 대신 Enum 클래스에서 위와 같이 묶어서 관리할 수 있다.
자바8 Function 참고
Enum 클래스로 상태 코드를 조회하고 각각의 코드에 따른 로직을 별도의 메소드를 통해 수행을 하도록 만들면 상태 코드의 조회와 코드에 따른 계산이 분리되어서 서로 관계가 있음을 표현할 수가 없다. 그래서 다음과 같이 Enum 클래스를 활용하여 계산 기능을 추가할 수 있다.
public enum CalculatorType {
CALC_A(value -> value),
CALC_B(value -> value * 10),
CALC_C(value -> value * 3),
CALC_ETC(value -> 0L);
private Function<Long, Long>. expression;
CalculatorType(Function<Long, Long> expression) {
this.expression = expression;
}
public long calculate(long value) {
return expresiion.apply(value);
}
}
Function은 value1을 받아서 value2로 반환해주는 역할을 하며 apply()를 통해 인자값을 받으면 계산식을 거쳐서 결과를 반환 받을 수 있다.
핵심은 객체가 상태(값)와 행위(로직)을 갖고 있는 것으로 직접 활용을 안 해봐서 100% 이해는 못 했지만 이번 프로젝트에서 적절하게 적용해보고 직접 적용해본 내용을 정리해보면 좋을 것 같다.
'Java' 카테고리의 다른 글
[Java] 제네릭에서 Raw Type 선언 주의 (이펙티브 자바) (0) | 2022.08.16 |
---|---|
[Java] HashMap put() 반환값 (null 조심) (0) | 2022.08.09 |
[Java] equals() 사용시 주의점 (NullPointerException) (0) | 2022.08.04 |
[Java] System.arraycopy() 와 Arrays.copyOf() 차이점 (JMH 벤치마킹) (0) | 2022.08.03 |
[Java] 자바 예외 (Exception) (0) | 2022.06.19 |