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

득이님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문, 주문상품 엔티티 개발

팩토리 메서드를 정적으로 사용하는 이유에 대해서 궁금합니다

해결된 질문

23.01.24 09:25 작성

·

834

3

안녕하세요 영한님 강의 잘 듣고 있습니다^^

전부터 궁금해 왔던 것인데요, 팩토리를 만들 때 정적으로 올리는 이유에 대해서 궁금합니다

영한님이 다른 QnA에서 추천해 주신 내용들을 읽어보았으나 굳이 왜 "정적"영역으로 보내는 가에 대한 의문은 쉽게 풀리지 않습니다 ㅜㅜ

일단 정적 팩토리 메서드로 보내면 생성자들에 대한 응집도가 크게 떨어지는 느낌입니다. "엘레강트 오브젝트"라는 책을 보면 생성자는 10~15개 까지도 만들고 퍼블릭 메서드를 최대한 적게 가져가라고 가이드를 주는데요, 정적 영역으로 보내면 주/부 생성자로 보낼 수 없기 때문에 그 많은 생성자들이 다 흩어지고, 생성자들 간 관계를 맺을 수 없기 때문에 유연성이 떨어지고 코드 중복이 자주 일어나는 효과가 나는 것 같습니다

이는 굳이 정적 영역으로 보내지 않고 주/부 생성자로 구분하면 쉽게 해결될 일이 아닌가? 하는 생각도 들어 질문을 드립니다

답변 1

4

David님의 프로필 이미지

2023. 01. 24. 15:26

안녕하세요. 득이님, 공식 서포터즈 David입니다.

  1. 정적 영역으로 보내지 않으면 반드시 생성자를 통해 객체를 생성해야 한 후 메서드를 호출할 수 있기 때문입니다. 정적 메서드의 경우 생성자를 통해 객체를 생성하지 않아도 호출할 수 있습니다.

  2. 주/부 생성자를 정적 팩터리 메서드 내에서 호출하면 해결됩니다.

    정적 영역으로 보내면 주/부 생성자로 보낼 수 없기 때문에 그 많은 생성자들이 다 흩어지고, 생성자들 간 관계를 맺을 수 없기 때문에 유연성이 떨어지고 코드 중복이 자주 일어나는 효과가 나는 것 같습니다

이와 관련된 논의는 이펙티브자바 아이템 1 을 키워드로 검색하셔서 찾아보시면 좋을 것 같습니다.

무조건 정적 팩터리 메서드를 사용해야 하는 것은 아니지만 해당 패턴이 가지는 장점도 있으니 참고해 주세요.

감사합니다.

득이님의 프로필 이미지
득이
질문자

2023. 01. 24. 17:27

앗 그렇군요!! 답변 주신 내용을 읽어보니 이제야 이해가 가네요
친절한 답변 감사합니다!!

득이님의 프로필 이미지

작성한 질문수

질문하기