아이템 1 - 생성자 대신 정적 팩터리 메서드를 고려하라
JAVA ·항상 생성자보다는 정적 팩터리 메서드를 사용하라는 것이 아니라,
정적 팩터리 메서드가 더 유용할 때가 있다는 것!
그리고 정적 팩터리 메서드는 팩터리 메서드 패턴과 다르다.
디자인 패턴과 연관이 없다.
장점
- 생성자와 다르게 자신만의 이름을 가질 수 있다.
- 여러 생성자가 필요하다면, 각각의 차이가 잘 드러나는 이름의 정적 팩터리 메서드를 고려하자.
- 매번 인스턴스를 새로 생성하지 않아도 됨.
- 반환 타입의 하위 타입 객체를 반환 가능, 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환 가능
- 객체 생성시 인터페이스의 구현체나 클래스의 하위 클래스를 반환할 수 있음
- 정적 팩터리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다.
- 반환할 객체의 의존성을 피할 수 있다.
- 반환할 객체의 의존성을 피할 수 있다.
단점
- 생성자없이 정적 팩터리 메서드만 제공하면 상속 불가
- private 생성자로 생성자를 막아놓으면 하위 객체를 생성할 없음
- 정적 팩터리 메서드는 찾기 어렵다.
- 메서드가 많아지면 생성해주는 메서드를 찾기 어렵다.
- 문서화를 잘해야 한다.