public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}
BigInteger(int, int, Random)
vs BigInteger.probablePrime()
(값이 소수인 BigInteger를 반환하는 메서드)Boolean.valueOf(boolean)
: 객체를 아예 생성하지 않음Flyweight pattern
- 어떤 클래스의 인스턴스 한 개만 가지고 여러 개의 "가상 인스턴스"를 제공하고 싶을 때 사용하는 패턴
- 즉 인스턴스를 가능한 대로 공유시켜 쓸데없이 new연산자를 통한 메모리 낭비를 줄이는 방식
반환 타입의 하위 타입이기만 하면, 어떤 클래스의 객체를 반환해도 상관 없음
EnumSet
: 원소가 64개 이하면 long
변수 1개를 관리하는 RegularEnumSet
, 원소가 65개 이상이면 long
배열로 관리하는 JumboEnumSet
의 인스턴스 반환클라이언트는 팩터리가 건네주는 객체가 어느 클래스의 인스턴스인지 알 수도 없고 알 필요도 없음
Service Provider Framework(서비스 제공자 프레임워크)를 만드는 근간이 됨
3개의 핵심 컴포넌트로 이루어짐
ex) JDBC(Java Database Connectivity)
Connection
: 서비스 인터페이스DriverManager.registerDriver
: 제공자 등록 APIDriverManager.getConnection
: 서비스 접근 APIDriver
: 서비스 제공자 인터페이스패턴의 변형이 여러 가지 있음
정적 팩터리 메서드 명명 방식
from
:매개변수를 하나 받아서 해당 타입의 인스턴스 반환하는 형변환 메서드 of
: 여러 매개변수를 받아 적합한 타입의 인스턴스를 반환하는 집계 메서드valueOf
: from과 of의 더 자세한 버전instance
, getInstance
: (받는다면) 매개변수로 명시한 인스턴스를 반환하지만, 같은 인스턴스임을 보장하지는 않음create
, newInstance
: instance 혹은 getInstance와 같지만, 매번 새로운 인스턴스를 생성해 반환함을 보장getType
: getInstance와 같으나, 생성할 클래스가 아닌 다른 클래스에 팩터리 메서드를 정의할 때 사용함 (Type : 팩터리 메서드가 반환할 객체의 타입)newType
: newInstance와 같으나, 생성할 클래스가 아닌 다른 클래스의 팩터리 메서드를 정의할 때 사용함 (Type : 팩터리 메서드가 반환할 객체의 타입)type
: getType, newType의 간결한 버전