클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단은
public
생성자다!
public static Boolean valueOf(final boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}
정적 팩터리 메서드의 장점
정적 팩터리 메서드는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다.
BigInteger.probablePrime
반면, 하나의 시그니처로는 생성자를 하나만 만들 수 있다.
불변 클래스는 인스턴스를 미리 만들어 놓거나, 새로 생성한 인스턴스를 캐싱하여 재활용할 수 있다.
반복되는 요청에 같은 객체를 반환하게 함으로, 언제 어느 인스턴스를 살아 있게 할지를 통제할 수 있다.
a == b
일 때만 a.equals(b)
가 성립).반환할 객체의 클래스를 자유롭게 선택할 수 있게 하는 엄청난 유연성
을 제공한다.
ex) 자바 컬렉션 프레임워크는 45개의 유틸리티 구현체를 제공하지만, 공개하지 않음으로써 API 외견을 훨씬 작게 만들 수 있었다.