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()
메서드를 반드시 재정의하여 값의 동등성을 확보해야 함**