인스턴스를 얻기 위한 방법은 크게 두 가지이다.

두 방식 모두 장점과 단점이 존재한다.

먼저 정적 팩토리메서드가 생성자보다 좋은 점 5가지를 알아보자

  1. 이름을 가질 수 있다.
  2. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다.
  3. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다.
  4. 입력된 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다.
  5. 정적 팩터리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다.

단점도 물론 존재한다. 각자에겐 장점과 단점이 모두 존재한다.

  1. 상속을 하려면 public 이나 protected 생성자가 필요하니 정적 팩터리 메서드만 제공하면 하위 클래스를 만들 수 없다
  2. 정적 팩터리 메서드는 프로그래머가 찾기 어렵다.

생성자 방식이라는 것은 new 를 이용해 객체를 생성하는 방식을 말한다.

정적 메서드 방식이란 인스턴스를 리턴해주는 정적메서드 방식을 의미한다.