티스토리 뷰

정적 팩토리 메소드란?

  • 생성자를 통해 객체를 생성하는 것이 아닌 메서드를 통해 객체를 생성하는 것을 정적 팩토리 메서드라고 한다.
  • 인스턴스 캐싱과 함께 사용하여 매번 새로운 인스턴스를 생성하지 않을 수 있다.

 

인스턴스 캐싱이란?

  • 인스턴스를 미리 만들어 두고 필요할 때 사용함으로서 메모리 낭비를 해결하는 방법이다.

 

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));
    }

    ...
}

 

참고

정적 팩토리 메서드(Static Factory Method)는 왜 사용할까?

반복적으로 사용되는 인스턴스 캐싱하기

댓글
Total
Today
Yesterday
링크
Apple 2023 맥북 프로 14 M3, 스페이스 그레이, M3 8코어, 10코어 GPU, 512GB, 8GB, 한글