해결된 질문
작성
·
849
3
안녕하세요 영한님 강의 잘 듣고 있습니다^^
전부터 궁금해 왔던 것인데요, 팩토리를 만들 때 정적으로 올리는 이유에 대해서 궁금합니다
영한님이 다른 QnA에서 추천해 주신 내용들을 읽어보았으나 굳이 왜 "정적"영역으로 보내는 가에 대한 의문은 쉽게 풀리지 않습니다 ㅜㅜ
일단 정적 팩토리 메서드로 보내면 생성자들에 대한 응집도가 크게 떨어지는 느낌입니다. "엘레강트 오브젝트"라는 책을 보면 생성자는 10~15개 까지도 만들고 퍼블릭 메서드를 최대한 적게 가져가라고 가이드를 주는데요, 정적 영역으로 보내면 주/부 생성자로 보낼 수 없기 때문에 그 많은 생성자들이 다 흩어지고, 생성자들 간 관계를 맺을 수 없기 때문에 유연성이 떨어지고 코드 중복이 자주 일어나는 효과가 나는 것 같습니다
이는 굳이 정적 영역으로 보내지 않고 주/부 생성자로 구분하면 쉽게 해결될 일이 아닌가? 하는 생각도 들어 질문을 드립니다
답변 1
4
안녕하세요. 득이님, 공식 서포터즈 David입니다.
정적 영역으로 보내지 않으면 반드시 생성자를 통해 객체를 생성해야 한 후 메서드를 호출할 수 있기 때문입니다. 정적 메서드의 경우 생성자를 통해 객체를 생성하지 않아도 호출할 수 있습니다.
주/부 생성자를 정적 팩터리 메서드 내에서 호출하면 해결됩니다.
정적 영역으로 보내면 주/부 생성자로 보낼 수 없기 때문에 그 많은 생성자들이 다 흩어지고, 생성자들 간 관계를 맺을 수 없기 때문에 유연성이 떨어지고 코드 중복이 자주 일어나는 효과가 나는 것 같습니다
이와 관련된 논의는 이펙티브자바 아이템 1
을 키워드로 검색하셔서 찾아보시면 좋을 것 같습니다.
무조건 정적 팩터리 메서드를 사용해야 하는 것은 아니지만 해당 패턴이 가지는 장점도 있으니 참고해 주세요.
감사합니다.
앗 그렇군요!! 답변 주신 내용을 읽어보니 이제야 이해가 가네요
친절한 답변 감사합니다!!