아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라 - KwangtaekJung/book-effective-java GitHub Wiki

아이템1. 생성자 대신 정적 팩터리 메서드를 고려하라.

  • 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단은 pubilc 생성자이다.
  • 클래스 생성자와 별도로 정적 팩토리 메서드(static factory method)를 제공할 수 있다.

정적 팩토리 메소드

  • 디자인 패턴의 팩토리 메소드와는 다른 것이다.
  • 장점
    • 첫 번째, 이름을 가질 수 있다. 반환될 객체의 특성을 설명할 수 있다.
    • 두 번째, 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다.
    • 세 번째, 반화 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다. ??
    • 네 번째, 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다.
    • 다섯번째, 정적 팩터리 메서드를 작성하느 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다. ??
  • 단점
    • 첫 번째, 상속을 하려면 public이나 protected 생성자가 필요하니 정적 팩터리 메소드만 제공하면 하위 클래스를 만들 수 없다.
    • 두 번째, 정적 팩터리 메소드는 프로그래머가 찾기 어렵다.