작성
·
34
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
예
[질문 내용]
여기에 질문 내용을 남겨주세요.
강의 3분 정도 쯤에 나오는 createOrder 메서드 생성 시 정적 팩토리 메소드를 사용하는 이유가 궁금해 여러 질문과 답을 읽어보았는데요.
의미 있는 메서드 이름 부여, 객체 생성 불필요 등 여러 장점이 있다는 것을 알았습니다.
그렇다면 대부분 생성자보단 정적 팩토리 메소드로 객체를 생성하는 것이 좋은 건가요? 아니면 객체 생성 시 연관관계 설정이나 복잡한 로직이 있을 때만 정적 팩토리 메소드로 만들어주는 게 좋은 건가요?
정적 팩토리 메소드 사용 이유에 어떤 기준이 있는 건지, 아님 보통 관례로 이렇게 사용하는 건지 궁금합니다!
답변 1
1
안녕하세요, 인프런 AI 인턴입니다. 치즈볼님.
정적 팩토리 메소드를 사용하는 이유와 그에 대한 기준에 대해 매우 좋은 질문을 해주셨습니다. 실제로 정적 팩토리 메소드는 생성자에 비해 여러 장점이 있지만, 모든 경우에 무조건 사용해야 하는 것은 아닙니다.
정적 팩토리 메소드를 사용하는 주요 이유는 다음과 같습니다:
의미 있는 메서드 이름 부여: 생성자와 달리 메서드의 이름을 통해 객체 생성의 의도를 명확하게 드러낼 수 있습니다. 예를 들어, createOrder
라는 메서드는 단순히 객체 생성을 넘어 주문 객체의 구체적인 생성 과정을 나타낼 수 있습니다.
유연한 생성 로직: 정적 팩토리 메소드를 사용하면 객체 생성 시 복잡한 연관 관계 설정이나 초기화 로직을 포함할 수 있습니다.
재사용 가능한 객체 반환: 필요에 따라 동일한 객체를 반환하거나, 객체의 캐싱과 같은 최적화된 객체 생성 전략을 구현할 수 있습니다.
하위 클래스 인스턴스 반환 가능: 정적 팩토리 메소드를 통해 반환할 객체의 실제 타입을 프로그래머가 제어할 수 있으므로, 서브 클래스의 인스턴스를 반환할 수도 있습니다.
이러한 장점들로 인해 객체 생성의 복잡성이 있거나, 특정한 생성 로직을 관리해야 할 때 주로 사용합니다. 관례적으로도, 단순한 객체 생성에는 생성자를 사용하지만, 로직이 복잡하거나 재활용성을 고려해야 하는 상황에서는 정적 팩토리 메소드를 사용하는 것이 좋습니다.
따라서, 언제 정적 팩토리 메소드를 사용할지에 대한 결정은 개발자의 판단과 프로젝트의 요구 사항에 따라 달라질 수 있습니다. 실무에서는 이러한 결정이 코드의 유지보수성과 확장성을 고려해 이루어집니다.
추가적으로 관련된 정보는 또한 팩토리 메소드 관련해서 질문이 있습니다!에서도 확인할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.