VO 관련 궁금한점
VO Money 에서 add(money:Money) 함수에 대해서 궁금합니다.
VO는 불변인데 Money를 초기화 해서 값을 재할당 하는건지 어떤식으로 이해하면 좋을지 궁금합니다.
답변 1
0
안녕하세요
우선 value object의 생명주기는 불변이니 한번에 생성하고, 삭제되는 성격을 가지고 있습니다.
네 그래서 구현한다면 다음과 같이 하면 됩니다.
public class Money {
public int value;
// Constructor to initialize the value
public Money(int value) {
this.value = value;
}
// Method to add the value of another Money object to the current object
public void add(Money money) {
this.value += money.value;
}
// Main method for testing
public static void main(String[] args) {
Money money1 = new Money(10);
Money money2 = new Money(20);
System.out.println("Before addition:");
System.out.println("Money 1 value: " + money1.value);
System.out.println("Money 2 value: " + money2.value);
// Add the value of money2 to money1
money1.add(money2);
System.out.println("\nAfter addition:");
System.out.println("Money 1 value: " + money1.value);
System.out.println("Money 2 value: " + money2.value);
}
}
0
답변 감사합니다.
몇 가지 더 궁금한게 있어서 질문드립니다!
1. 작성해주신 예시는 값을 변경하는데 괜찮은걸까요?? 불변 객체 처럼 취급 하라는 말이 아니였는지 예시에서 코드를 조금 수정했는데 이렇게 이해하면 잘못 이해한 부분인지 궁금합니다.
public final class Money {
private final int value;
public Money(int value) {
this.value = value;
}
public Money add(Money money) {
return new Money(this.value + money.value);
}
public int getValue() {
return value;
}
public static void main(String[] args) {
Money money1 = new Money(10);
Money money2 = new Money(20);
System.out.println("Before addition:");
System.out.println("Money 1 value: " + money1.getValue());
System.out.println("Money 2 value: " + money2.getValue());
money1 = money1.add(money2);
System.out.println("\nAfter addition:");
System.out.println("Money 1 value: " + money1.getValue());
System.out.println("Money 2 value: " + money2.getValue());
}
}VO는 생성 삭제가 자유롭고 따로 생명주기가 없는줄 알았는데 생명주기가 불면 이라면 이미 만들어진 Entity에서 VO의 값을 변경해야 할 때 Entity가 다시 생성되어야 하는건가요? 아니면 그렇기에 VO의 값을 변경할 수 있는건가요?
2-1. https://www.inflearn.com/questions/1124319/vo%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%A7%88%EB%AC%B8%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4 이전 질문에서 값의 수정이 필요하다면 VO 보단 Entity를 고려하라고 말씀해주셨는데 작성해주신 예시와 같이 값을 변경할 수 있다면 Entity를 고려해야 하는 이유도 궁금합니다.
2-2. Entity가 이미 생성이 되었는데 VO는 나중에 생성할 수 있나요?
1
아 죄송합니다. 제가 잘못된 예시를 드렸네요.
수정하신 코드가 맞습니다.
값 객체는 불변이므로 새로운 인스턴스를 반환해야 하는데 코드를 잘못 작성했네요.
public Money add(Money money) {
return new Money(this.value + money.value);
}그리고 2번 질문은 아 제가 생명주기라는 용어를 잘못 사용해서 그런게 느끼신 것 같습니다. 생명주기가 있는 객체가 엔티티고 생명주기가 무의미한 성격을 vo로 모델링 하는 것이 맞습니다.
그리고 엔티티의 속성으로 vo가 정의되었다면 vo 객체를 생성해서 교체 할 수 있습니다.
애그리거트 질문있습니다!
0
31
2
도메인 질문있습니다
0
47
2
MSA 질문이 있습니다
0
67
1
현재에도 강의와 동일한 방식을 사용하고 계실지 궁금합니다.
0
65
2
다른 BC 또는 마이크로서비스 담당 정보를 어떻게 이용하나요?
0
133
3
VO에 대해서 질문있습니다.
0
402
1
도메인, 바운디드 컨텍스트 관련해서 궁금합니다.
0
790
1
앱에서 DDD를 적용하는 것이 맞는걸까요?
1
747
1
도메인 영역에 대한 질문
0
313
1
클린 아키텍처와 헥사고날 아키텍처 질문
0
488
2
전략적 설계와 전술적 설계
0
314
1
DDD 현실적 적용
1
655
3
애그리거트의 크기
0
584
2
엔티티와 값객체와의 차이
0
560
1
확장성 관점에서 Value Object, Entity, Aggregate
0
402
1
도메인 서비스와 응용서비스의 구분
0
1511
1
Aggreagte 에 두개 이상의 Entity로 구성할 수 있나요?
0
632
1
VO, Entity 궁금한 부분이 있습니다.
1
436
1
안녕하세요. PPT 자료 공유 부탁 드려요.
0
509
1
usecase 작성 단계가 궁금합니다.
0
599
1
대여 도메인 장 관련 문의드립니다.
1
434
1
애그리거트 추출 질문드립니다.
0
596
1
도메인 이벤트 추출관련해서 여쭤보고 싶습니다!
0
467
1
컨트롤러 관련해서 질문이 있습니다!!
0
402
1





