인프런 커뮤니티 질문&답변

whdk333님의 프로필 이미지

작성한 질문수

강의 내용중 궁금한 점 질문드립니다.

작성

·

93

0

//==생성 메서드==//
public static OrderItem createOrderItem(Item item, int orderPrice, int count) {

    OrderItem orderItem = new OrderItem();
    orderItem.setItem(item);
    orderItem.setOrderPrice(orderPrice);
    orderItem.setCount(count);
    item.removeStock(count);
    return orderItem;
}

이러한 생성메서드는 언제 사용하는건가요?
코드를 분석해보니 연관관계에서 다 대 1인 케이스에서, '다'쪽에서 생성 메서드를 사용하는 것 같은데 맞나요?

감사합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

whdk333님, 질문하신 생성 메서드 사용 상황에 대해 답변드립니다.

주로 생성 메서드는 도메인 모델에서 객체를 생성할 때 초기화 로직이 복잡하거나, 여러 단계의 설정이 필요할 때 사용합니다. 특정 클래스의 인스턴스를 생성하고 초기화하는 과정을 캡슐화하여, 사용하는 측면에서는 객체 생성 시 필요한 세부 구현을 몰라도 되는 편리함을 제공합니다. 보통은 이런 팩토리 메서드 패턴이나 빌더 패턴과 유사한 방식으로 적용됩니다.

whdk333님이 말씀하신대로, 연관관계가 있는 경우, 특히 ‘다’쪽에서 ‘1’쪽의 객체와의 관계를 설정하며 생성하는 경우에 이러한 생성 메서드를 효과적으로 사용할 수 있습니다. 이러한 방법은 객체간의 관계를 명확하게 설정할 수 있도록 도와줍니다. 즉, 연관관계를 설정할 때 초기화 로직이 복잡하거나, 기본 생성자만 사용하여 객체를 만든 후 필드를 설정하는 것보다 객체의 일관성과 안전성을 보장할 수 있습니다.

따라서, 제시해주신 코드에서도 OrderItem 객체를 안전하게 생성하면서, 관련된 Item 객체의 상태도 함께 업데이트(재고 감소)하는 등의 작업을 수행하고 있어, 이러한 생성 메서드의 효율적인 사용 사례로 볼 수 있습니다.

감사합니다.

whdk333님의 프로필 이미지

작성한 질문수

질문하기