VO(Value Object)

  • 불변성 - 수정자(Setter)가 없다.
  • 값 동등성 - 내부 값 동등성 검사
  • 자가 유효성 검사 - 생성자에서 validate

불변성

Value Object는 불변이다.
불변이라는 뜻은 한번 생성되면 이후 내부 값을 바꿀 수 없음을 의미한다. 즉 setter를 허용하지 않는다는 말이다.

Value Object는 코드의 다른 부분에서 수정되지 않기 때문에 Reference로 공유할 수 있다. 이것은 코드의 복잡성과 부하를 극적으로 감소시킨다. 또한 Multi-thread환경에서 그 이점이 뚜렷해진다.

# 생성된 이후에는, 수정자(setter)를 통해 수정되지 않습니다. 
final class Number{

        private int number;
        
        public Number(int number){
                this.number = number;
        }
}

값 동등성

‘동일성’ 식별자를 기반으로 객체가 같은지를 판단할 수 있는 성질
‘동등성’ 상태를 이용해 두 값이 같은지 판단할 수 있는 성질

자가 유효성 검사

생성자가 주입될 때 값의 유효성을 확인해야 한다. 유효하지 않으면 의미있는 에러를 표출한다. 이는 객체의 인스턴스에 더이상 if가 없음을 의미한다. 모든 유효성 검사는 생성 시간에 이루어진다.

이러한 강제 유효성 검사는 의미 있고 명시적인 방법으로 도메인 제약 조건을 표현하는데도 유용하다.

Comment and share

  • page 1 of 1

Hyeon Soo Ahn

author.bio


author.job