티스토리 뷰
정적 팩토리 메소드란?
- 생성자를 통해 객체를 생성하는 것이 아닌 메서드를 통해 객체를 생성하는 것을 정적 팩토리 메서드라고 한다.
- 인스턴스 캐싱과 함께 사용하여 매번 새로운 인스턴스를 생성하지 않을 수 있다.
인스턴스 캐싱이란?
- 인스턴스를 미리 만들어 두고 필요할 때 사용함으로서 메모리 낭비를 해결하는 방법이다.
public class LottoNumber {
// 인스턴스 캐싱
private static final Map<Integer, LottoNumber> lottoNumbers = new HashMap<>();
// 1부터 45까지 LottoNumber 객체를 미리 생성한다.
static {
for (int number = LOTTO_START_NUMBER; number <= LOTTO_END_NUMBER; number++) {
lottoNumbers.put(number, new LottoNumber(number));
}
}
private final int number;
private LottoNumber(int number) {
Validate.isNumber(String.valueOf(number));
Validate.isOutOfBound(number);
this.number = number;
}
// 정적 팩토리 메서드
// 객체가 필요하면 새로 생성하지 않고 인스턴스 캐시에서 가져온다.
public static LottoNumber from(int number) {
return lottoNumbers.get(number);
}
public static LottoNumber from(String number) {
return LottoNumber.from(Integer.parseInt(number));
}
...
}
참고
'Design Pattern' 카테고리의 다른 글
우아한테크캠프 Pro 5기 - 한 줄에 점을 하나만 찍는다(디미터의 법칙) (0) | 2022.11.09 |
---|---|
우아한테크캠프 Pro 5기 프리코스 - 일급 컬렉션(First Class Collection)과 원시값, 문자열 포장 (0) | 2022.10.12 |
퍼사드 패턴 (0) | 2021.03.13 |
댓글