직접적으로 생성자를 통해 객체를 생성하는 것이 아닌 메서드를 통해서 객체를 생성하는 것이다.
1) 메서드 이름에 객체 생성 목적을 표현할 수 있어 가독성이 높아진다.
2) 호출할 때마다 새로운 객체를 생성할 필요가 없다.
-> 불변 객체인 경우 인스턴스를 미리 만들어 놓거나 새로 생성한 인스턴스를 캐싱해서 재활용하고 있다.
3) 반환 타입의 하위 자료형 객체를 반환할 수 있다.
-> 생성자의 역할을 하는 정적 팩토리 메서드가 반환값을 가질 수 있다. 그렇기 때문에 반환 타입의 하위 타입이기만 하면 어떤 클래스의 객체를 반환해도 상관없다.
4) 객체 생성을 캡슐화 할 수 있다.
(생성자를 사용하면 DTO 변환을 위해 getter를 호출하지만, 정적 팩토리 메서드의 경우 메서드만 호출하면 된다.)
*참고 자료
https://velog.io/@ljinsk3/%EC%A0%95%EC%A0%81-%ED%8C%A9%ED%86%A0%EB%A6%AC-%EB%A9%94%EC%84%9C%EB%93%9C%EB%8A%94-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C
https://it-mesung.tistory.com/184