Language/Java

[Effective Java] Item 3

Lunker 2017. 1. 14. 15:44

Item 3. 


- Singleton + serializable일 떄에는 추가적인 작업이 필요하다. 


- single-element enum type is the best way to implement a singleton. 



[Singleton 구현 방법]

- 일반적인 singleton 구현은, 인스턴스가 사용되는 시점에 생성되지 않는다. private static xxx = new xxx();로 인하여 클래스가 로드될 때 생성된다.


- 이를 극복하기 위해 lazy initiailzation을 사용한다.

-> private static xxx;만 해놓고 getInstance()에서 생성자 호출. 

-> 하지만 이러한 방법은 multi thread일 경우 안전하지 않다. 

-> 동시에 getInstance()를 호출하게 되면, 여러개의 instance가 생성될 수 있다. 


- initialization on demand holder idiom !! [best]