/**
* Created by joenggyu0@gmail.com on 4/7/20
* Github : http://github.com/lenkim
*/
package net.slipp.moim.domain.model.recruit;
public enum Status {
BEGIN {
public boolean isBegun() {
return true;
}
},
WORKING {
public boolean isWorking() {
return true;
}
},
FINISH {
public boolean isFinished() {
return true;
}
};
public boolean isBegun() {
return false;
}
public boolean isWorking() {
return false;
}
public boolean isFinished() {
return false;
}
}
위 코드를 이해하기 앞서서 Status는 값으로 표현된다. 이는 엔티티와 상반되는 개념으로, 반버논 책에서는
값으로 표현되는 표준 타입
이라는 말을 썼다.
표준 타입 > 대상의 타입을 나타내는 서술적 객체. 대상(엔티티)이나 설명(값)은 그 자체로 존재하기도 하지만, 타입에 따라 해당 대상을 구분해주는 표준 타입이 존재할 수도 있음 = 열거형
예를 들어, PhoneNumber(값)이 있다면 이것은 "집(Home) 번호인가?", "휴대폰(Mobile) 번호인가?", "회사(Work) 번호인가?" 이렇게 전화의 표준타입을 나타낸다.
위 코드도 마찬가지다. Status 값이 있다면, 이건 "시작인가? 진행중인가? 마감되었는가?" 라는 형태의 표준타입을 사용하게 된 것이다.
열거형 선언의 가장 아래쪽에는 모든 상태의 기본값 행동을 구현한 두 메서드인 isBegun()과 isWorking(), isFinished()가 있다. 모든 메소드는 모두 기본값으로 false을 반환하는데, 이는 올바른 기본 행동이다. 그러나 이 메서드는 각 상태의 정의에서 자신의 특정 상태에 맞쳐 true를 반환하도록 재정의된다.
'도메인 주도 설계' 카테고리의 다른 글
[동영상 정리]애플리케이션 아키텍처와 객체지향 - 조영호님 (0) | 2020.08.21 |
---|---|
반버논이 말하는 Value Object 란? (0) | 2020.08.12 |
Notification 구현 in IDDD_Samples - 메시지에 기반한 알림 발행 (0) | 2020.08.08 |
Notification 구현 in IDDD_Samples - 리소스풀 방식 (0) | 2020.08.08 |
도메인 주도 설계에서 Notification 이란 무엇인가? (0) | 2020.08.08 |
댓글