[DDD START] 1장 도메인 모델 시작

Source

Domain

도출한 모델

도출한 모델은 크게 Entity와 Value로 구분할 수 있다

Entity

Value 타입

public class Receiver {
    private String name;
    private String phoneNumber;
}

public class ShippingInfo {
    private Receiver receiver;

}
public class Money {
    private int value;
    
    public Money(int value) {
        this.value = value;
    }

    public int getValue() {
        return this.value;
    }
}

public class OrderLine {
    private Money price;
}

도메인 모델에 set 메서드 넣지 않기

set 메서드의 문제

// set 메서드로 데이터를 전달하도록 구현하면
// 처음 Order를 생성하는 시점에 Order는 완전하지 않다
Order order = new Order();

// set 메서드로 필요한 모든 값을 전달해야 함
order.setOrderLine(lines);
order.setShippingInfo(shippingInfo);

// 주문자(Orderer)를 설정하지 않은 상태에서 주문 완료 처리
order.setState(OrderState.PREPARING);

Reference