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

정성훈님의 프로필 이미지
정성훈

작성한 질문수

Practical Testing: 실용적인 테스트 가이드

Business Layer 테스트 (1)

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

작성

·

489

0

제목 그대로 언제 사용하시는지에 대해 얘기를 나눠보고 싶어 질문 남깁니다.제 경우는 영속성 계층에 새로운 객체가 추가될 때 (RDB에 레코드를 추가할 때) new 키워드를 사용하여 id 값을 생성자로 받지 않는 생성자를 열어두고,존재하는 도메인 엔티티 혹은 영속성 엔티티를 영속성 계층으로부터 불러올 때는 정적 팩터리 메서드를 사용하는데강의를 진행하시면서 습관적으로 생성자 대신 static 메서드를 통해 생성 하시더라구요, 강사님만의 명확한 기준이 있으신지 궁금합니다.

답변 2

2

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

안녕하세요, 정성훈 님! :)

제가 정적 팩토리 메서드를 사용하는 기준은 다음과 같습니다. (물론 정답이란 건 없고, 제 기준일 뿐입니다. ㅎㅎ)

  • 인스턴스를 생성하는 로직에 특별한 의미를 부여하고 싶을 때 (메서드명을 통한 추상화 과정)

  • 여러 파라미터 Set으로 역할에 맞게 각각 인스턴스를 생성하고 싶을 때

    • 예를 들어 객체 필드로 a, b, c 값을 정해야 인스턴스를 생성할 수 있다고 가정했을 때, 만약 a, b만 외부에서 받고 c는 특정한 기본값을 넣을 경우, 그리고 a만 외부에서 받고 b, c는 특정한 기본값을 넣어주는 경우가 있다고 하면, 이럴 때 정적 팩토리 메서드를 사용하여 외부에 어떤 값이 필요한지, 그리고 내부에서 무엇을 기본값으로 넣어주며 왜 그렇게 하는지를 각각의 메서드명으로 표현해 볼 수 있습니다.

기준은 이러하나, 보통 꼭 이런 케이스가 아니더라도 애플리케이션의 발전 가능성을 고려하여 습관적으로 정적 팩토리 메서드를 사용합니다.
특정 파라미터와 메서드명을 부여하여 외부에 의미를 전달해 줄 수 있다는 것이 가장 큰 장점인 것 같아요.

감사합니다. :)

0

안녕하세요 정성훈 님, 인프런 AI 인턴이에요.
정적 팩터리 메서드는 객체 생성과 관련된 메서드로, 객체 생성을 담당하는 static 메서드를 의미합니다. 이를 사용하는 기준은 개발자의 상황과 문제에 따라 다를 수 있습니다.
일반적으로 정적 팩터리 메서드는 객체 생성에 유연성을 제공하고, 코드를 더욱 명확하고 가독성 있게 만들어줍니다. 또한, 객체를 캐싱하거나 객체 생성 로직을 감추는 등의 용도로 사용될 수 있습니다.
강의에서 정적 팩터리 메서드를 사용한 이유는 특정 상황에서 더 효과적인 객체 생성을 위해서 였을 수도 있습니다. 하지만 실제로는 개별 개발자나 팀의 개발 스타일이나 정책에 따라 다를 수 있으므로, 명확한 기준이 있는 것은 아닐 수 있습니다.
따라서, 특정 상황에서 정적 팩터리 메서드를 사용하여 객체를 생성하는 것이 적합한지 판단하기 위해서는 해당 상황과 요구사항을 고려하여 결정하는 것이 중요합니다. 감사합니다!

정성훈님의 프로필 이미지
정성훈

작성한 질문수

질문하기