정적 팩토리 메서드란?
: 객체 생성의 역할을 하는 클래스 메서드
즉, 직접적으로 생성자를 통해 객체를 생성하는 것이 아닌, 메서드를 통해서 객체를 생성하는 것
(보통 네이밍을 from(하나의 매개변수를 받아서 객체를 생성), of(여러개의 매개 변수를 받아서 객체를 생성)로 함.)
정적 팩토리 메서드의 (생성자보다 나은) 장점
- 메서드 이름에 객체의 생성 목적을 담아낼 수 있음 → 가독성이 좋아짐
- 호출할 때마다 새로운 객체를 생성할 필요가 없음
- 새로운 객체 생성의 부담을 덜 수 있음
- 생성자를 private으로 설정해서 객체 생성을 정적 팩토리 메서드로만 가능하도록 제한할 수 있음
- 자주 사용되는 요소의 개수가 정해져 있다면, 해당 개수만큼 미리 생성해 놓고 조회(캐싱)하는 구조로 만들 수 있음
- 하위 자료형 객체를 반환할 수 있음
- 상속 시 확인 가능. 정적 팩토리 메서드가 반환값을 가지고 있기에 가능한 특징
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(); } } ... }
- 객체 생성 캡슐화 가능
- 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 |