본문 바로가기

개발&새발/Java

생성자 대신 정적 팩터리 메서드를 사용할 수 없는지 생각해 보라 - Effective Java 규칙1

결론

"정적 팩터리 메서드와 public 생성자는 용도가 서로 다르며, 그 차이와 장단점을 이해하는 것이 중요하다. 정적 팩터리 메서드가 효과적인 경우가 많으니, 정적 팩터리 메서드를 고려해 보지도 않고 무조건 public 생성자를 만드는 것은 삼가기 바란다."

 

팩터리 메서드의 장점

1. 생성자와는 달리 정적 팩터리 메서드에는 이름(name)이 있다.

2. 생성자와는 달리 호출할 때마다 새로운 객체를 생성할 필요는 없다.

3. 생성자와는 달리 반환값 자료형의 하위 자료형 객체를 반환할 수 있다.

4. 형인자 자료형(parameterized type) 객체를 만들 때 편하다.

 

팩터리 메서드의 단점

1. public이나 protected로 선언된 생성자가 없으므로 하위 클래스를 만들 수 없다는 것이다.

2. 정적 팩터리 메서드가 다른 정적 메서드와 확연히 구분되지 않는다는 것이다.