본문 바로가기

언어/자바

[Effective java] 생성자 대신 정적 팩터리 메소드를 고려하라

일반적으로 객체 생성은 클래스의 생성자를 활용한다.

이 외에 정적 팩터리 메소드를 사용해서 객체를 반환할 수도 있다.

 

정적 팩토리 메서드의 장점

1. 이름을 가질 수 있다 

어떠한 객체를 생성하는지, 설명해줄 수 있다.

 

2. 호출될 때 마다 인스턴스를 새로 생성하지는 않아도 된다.

불필요한 객체 생성을 매번 할 필요 없다면 미리 만들어둔 인스턴스를 재활용할 수 있다.

 

3. 반환 타입의 하위 타입 객체를 반환할 수 있다.

즉, 다형성을 응용할 수 있다.

 

4. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다.

3의 장점을 기반으로 매개변수가 어떤 값이 들어오느냐에 따라 다른 클래스의 객체를 반환할 수 있다.

 

5. 정적 팩터리 메소드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다.

 

 

단점

1. 상속을 하려면 생성자가 private이면 안 된다. 정적 팩터리 메소드만 제공한다면 하위 클래스를 만들 수 없다.

 

2. 정적 팩토리 메소드의 존재여부를 알기 어렵다.

'언어 > 자바' 카테고리의 다른 글

[Effective java] equals는 일반 규약을 지켜 재정의하라.  (0) 2019.07.22
java.util.Date와 LocalDateTime  (0) 2019.07.20
Autoboxing And Unboxing  (0) 2019.07.14
Enum의 static field 접근  (0) 2019.04.25
jre와 jdk  (0) 2019.03.17