본문 바로가기

Language/Java

[Effective Java] item 1

생성자 대신 static factory method를 고려하라

updated 2016.12.19 





[static factory method]

- 해당 class의 instance를 반환. 

- design pattern의 factory method와는 다르다! 

- 단순히 생성자의 매개변수 list를 다르게 하여 여러 생성자를 두는 것은 좋지 못하다! 

그러면 코드를 읽는 사람은 단순히 코드만 보고서는 이 생성자가 무엇을 의미하는지 알지 못한다.

이럴때에 추가적으로 class documentation을 봐야 알 수 있다. 

- immutable class를 가능케함. 



**장점**

- 생성자와는 달리 static factory method는 이름을 가진다. 

- 생성자와 달리 해당 class가 필요할 때 마다 새로운 객체를 만들 필요가 없다. 

- 동일한 객체가 빈번하게 필요할 경우 유용 

- return type의 subtype의 어떠한 객체들이라도 반환할 수 있다. 



**단점**

- public or proected 생성자가 없으면 subclass가 될 수 없다. 

- 다른 static method와 구분하기 쉽지 않다. (일반 static method와 구별되지 않아서, 문서에서나 클래스를 참고할 때

어떻게 instance화 하는지 알기가 쉽지 않다.) 



* noninstantiable class : private 생성자로 인하여 직접 인스턴스화 할 수 없는 class

* type interface : p.9참고 ! 


'Language > Java' 카테고리의 다른 글

[Effective Java] Item4.  (0) 2017.01.14
[Effective Java] Item 3  (0) 2017.01.14
[Effective Java] item 2  (0) 2016.12.20
attach source javadoc in eclipse  (0) 2015.02.11