JAVA/Effective Java
item1. 생성자 대신 static 팩토리 메서드 사용을 고려하자
B정상
2010. 1. 13. 09:59
public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}
public 생성자 대신 static 팩토리 메서드를 제공하면 다음과 같은 장점이 있다.
1. static 팩토리 메서드는 생성자와 달리 자신의 이름을 가질 수 있다.
생성자 매개변수가 반환객체를 제대로 나타내지 못하면 이름을 잘 지은 static 팩토리 메서드가 더사용하기 쉽고
이 메서드를 호출하는 클라이언트 코드도 이해하기 쉽다.
2. 생성자와 달리 호출때마다 매번 새로운 객체를 생성할 필요가 없다.
이미 생성된 인스턴스를 다시 사용할 수 있으며, 불필요하게 인스턴스들이 생성되는 것ㅇ르 방지하기 위해 이미
생성된 인스턴스를 저장했다가 반복 사용할 수 있다. 이렇게 인스턴스를 제어하는 일을 하는 클래스를 인스턴스
제어 (instance controlled) 클래스라고 한다. 인스턴스를 제어하면 싱글톤, 인스턴스 생성불가 클래스를 만들 수
있다.
3. 자신의 인스턴스만 반환하는 생성자와 달리 반환하는 타입의 어떤 서브타입의 객체도 반환할 수 있다.
4. 매개변수화 타입(parameterized type)의 인스턴스를 생성하는 코드를 간결하게 해준다.
static 팩토리 메서드의 단점
1. 인스턴스 생성을 위해 static 팩토리 메서드만 갖는 경우, public이나 protected 생성자가 없는 경우
서브클래스를만들 수 없다.
2. 다른 static 메서드와 구별할 수 없다.