본문 바로가기

프로젝트 기록

정적 팩토리 메서드

정적 팩토리 메서드란?

: 객체 생성의 역할을 하는 클래스 메서드

즉, 직접적으로 생성자를 통해 객체를 생성하는 것이 아닌, 메서드를 통해서 객체를 생성하는 것

(보통 네이밍을 from(하나의 매개변수를 받아서 객체를 생성), of(여러개의 매개 변수를 받아서 객체를 생성)로 함.)

 

정적 팩토리 메서드의 (생성자보다 나은) 장점

  1. 메서드 이름에 객체의 생성 목적을 담아낼 수 있음 → 가독성이 좋아짐
  2. 호출할 때마다 새로운 객체를 생성할 필요가 없음
    • 새로운 객체 생성의 부담을 덜 수 있음
    • 생성자를 private으로 설정해서 객체 생성을 정적 팩토리 메서드로만 가능하도록 제한할 수 있음
  3. 자주 사용되는 요소의 개수가 정해져 있다면, 해당 개수만큼 미리 생성해 놓고 조회(캐싱)하는 구조로 만들 수 있음
  4. 하위 자료형 객체를 반환할 수 있음
    • 상속 시 확인 가능. 정적 팩토리 메서드가 반환값을 가지고 있기에 가능한 특징
    public class Level {
      ...
      public static Level of(int score) {
        if (score < 50) {
          return new Basic();
        } else if (score < 80) {
          return new Intermediate();
        } else {
          return new Advanced();
        }
      }
      ...
    }
    
  5. 객체 생성 캡슐화 가능
  6. DTO와 Entity 간 자유롭게 형 변환이 가능해야 하는데, 정적 팩토리 메서드를 사용하면 내부 구현을 모르더라도 쉽게 변환 가능

 

즉, 정적 팩토리 메서드는 가독성 좋은 코드를 작성하고 객체지향적으로 프로그래밍 할 수 있도록 도와줌!

 

 


참고 자료 : https://tecoble.techcourse.co.kr/post/2020-05-26-static-factory-method/

'프로젝트 기록' 카테고리의 다른 글

JPA Paging 삽질 기록  (0) 2022.02.23
Entity type으로 Wrapper class를 사용하는 이유  (0) 2022.02.23
Thread Local이란?  (0) 2022.02.23
기타 에러 해결 기록들  (0) 2022.02.23
JPA N+1 문제 해결  (0) 2022.02.23