반응형
- 일반적으로 클래스의 인스턴스를 생성할 때 public 생성자를 많이 사용한다.
- 하지만 대부분의 primitive Type의 Boxing Class는 static factory method를 제공한다.
public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : Boolean.FALSE; }
- 장점
- 인스턴스 생성 시 이름으로 의미를 부여할 수 있다
- 반환 타입의 하위 타입 객체를 반환할 수 있다
- 객체 클래스를 자유롭게 선택하는 유연성을 줌
- 인터페이스 기반 프레임워크로 만들어 줌
- 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다
- 단점
- 해당 클래스를 상속하려면 public 이나 protected 생성자가 필요하기 때문에 static factory method만 사용하기는 어렵다
- 단, 이 부분은 composition을 유도한다는 점에서 장점일 수도 있다
- 객체를 생성하기 위한 방법을 다른 개발자가 인지하기 어려울 수 있다. 흔히 사용되는 명명(from, of)를 사용하는 것을 권장한다.
- 해당 클래스를 상속하려면 public 이나 protected 생성자가 필요하기 때문에 static factory method만 사용하기는 어렵다
- 결론
- 단점보다는 이점이 더 많으므로 무작정 public 생성자를 사용하는 것에 대해 다시 한번 생각해보자.
Effective Java Study / 2021.11.17 / 이재성님
반응형
☕️ Networking
기술 직군의 기술적인 교류, 커리어 이야기, 직군 무관 네트워킹 모두 환영합니다!
위클리 아카데미 오픈 채팅방(비밀번호: 9323)
kakaotalk: https://open.kakao.com/o/gyvuT5Yd