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

Doobie님의 프로필 이미지

작성한 질문수

Readable Code: 읽기 좋은 코드를 작성하는 사고법

일급 컬렉션

정적 팩토리 메소드 사용 이유

24.09.25 00:38 작성

·

72

0

  • 강의를 듣다가 갑자기 드는 질문이 있습니다.

  • 생성자를 private로 감추고 정적 팩토리 메소드를 사용해서 of나 from 이런식으로 만드시는데 왜 이렇게 하시는지 궁금합니다.
    정적 팩토리 메서드는 메서드 이름을 통해 생성의 의도를 명확히 전달할 수 있다고 하는데, 이것말고 또 사용 이유가 있으실까요 ??

답변 2

0

박우빈님의 프로필 이미지
박우빈
지식공유자

2024. 09. 28. 18:21

안녕하세요, Doobie 님!

기본적으로는 생성 의도를 전달할 수 있다는 장점이 가장 큰데요!
(개인적으로) 정적 팩토리 메서드에 비해 new 키워드가 가독성이 조금 더 떨어진다고 생각해서 그렇습니다.
추가적으로, 만약 여러 상황에서 파라미터만 조금씩 다르게 인스턴스를 생성해주고 싶을 때, 여러 이름을 가진 정적 팩토리 메서드들을 통해 그 의도를 전달하면서 인스턴스를 생성하도록 할 수도 있습니다.

강의에서도 이야기하지만, 일반 생성자를 통해 인스턴스를 생성하는 방식이 나쁘다고는 전혀 생각하지 않습니다 ㅎㅎ
객체를 new로 만들던 of()로 만들던, 가장 중요한 건 전체 코드의 흐름과 의도를 명확히 전달하는 것이니까요!

감사합니다 🙂

0

인프런 AI 인턴님의 프로필 이미지

2024. 09. 25. 00:41

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

Doobie님께서는 생성자를 감추고 정적 팩토리 메소드를 사용하는 이유에 대해 궁금해 하시는군요. 이에 대해 답변드릴 수 있는 유사한 질문과 그 답변들을 소개합니다.

  1. 정적 팩터리 메서드 사용 기준

    • 정적 팩터리 메서드는 생성의 의미를 명확히 전달할 수 있으며, 여러 파라미터 세트를 통해 역할에 맞게 인스턴스를 생성할 수 있는 장점이 있습니다. 생성자보다 인스턴스 생성의 유연성을 높일 수 있습니다.
  2. 팩토리 메서드를 지양하고 생성자 혹은 Builder 패턴을 쓰라는 말씀에 관하여

    • 팩토리 메서드는 객체 생성과 관련된 로직을 캡슐화할 수 있어 테스트 독립성을 보장할 수 있습니다. 생성자의 파라미터가 많아 실수할 확률이 있는 경우에도 유용합니다.
  3. static 사용 기준이 궁금합니다

    • 정적 메서드는 가독성을 높이면서도 객체의 생성 로직을 명확하게 정의할 수 있습니다. 특히, 객체를 캐싱하거나 객체 생성 로직을 감추는 데 유용합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Doobie님의 프로필 이미지

작성한 질문수

질문하기