VO(Value Object)의 필요성과 활용법

VO(Value Object) 필요성 느끼기

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

디자인 패턴

대상자

  • 초보 개발자 및 객체지향 프로그래밍 학습자
  • 도메인 주도 설계(DDD) 적용자
  • 중간 난이도: VO의 개념과 사용 시기 이해 필요

핵심 요약

  • Value Object(VO)는 데이터의 을 중심으로 설계되며, 불변성(Immutability)을 강조
  • VO는 데이터 전달비즈니스 규칙 공유에 적합한 캡슐화된 객체로, 중복 제거일관성 유지에 기여
  • VO는 엔티티(Entity)값의 동등성을 비교하는 방식이 다름 (예: equals() 메서드 재정의)

섹션별 세부 요약

1. VO의 정의와 특징

  • VO는 을 표현하는 객체로, 아이덴티티(Id)가 없고 내부 상태만으로 동등성을 판단
  • 불변성(Immutability)을 유지하기 위해 생성자로만 초기화하고 Setter 메서드를 제거**
  • VO는 엔티티(Entity)와 구분되며, 데이터 전달이나 비즈니스 로직 공유에 주로 사용

2. VO의 사용 시기와 예시

  • 데이터 전달 객체(DTO)로 사용될 때, VO의 불변성을 통해 데이터 오염 방지 가능**
  • 복잡한 비즈니스 규칙캡슐화하여 중복 코드 제거 가능
  • 예시: 주소, 통화, 날짜 등 값의 동등성이 중요한 객체를 VO로 표현**

결론

  • VO는 불변성캡슐화를 통해 코드 안정성을 높이고, 중복 제거데이터 일관성 유지에 유리
  • VO를 설계할 때는 equals()hashCode() 메서드를 반드시 재정의하여 값의 동등성을 확보해야 함**