2016년 4월 1일 금요일

Design Pattern Digest - 2. Singleton

이글은 책 "Java언어로 배우는 디자인 패턴 입문"을 읽고 쓴 요약입니다. 
나만 이해하도록 불친절하게 작성되어 있습니다. 
자세한 내용은 책을 보세요. 


Singleton



  • 인스턴스가 한 개 밖에 존재하지 않는 것을 보증하는 패턴.
  • 인스턴스 개수를 n개로 만드는 응용도 가능하다. (이러면 Flyweight 패턴과 비슷해짐)
  • 너무 유명한 패턴이어서 코드가 정형화되어 있다. 일단 생성자는 private으로 만든다. static member 변수인 instance를 static 하게 생성하고 그 뒤로는 getInstance() 메소드를 통해서 생성된 instance를 제공한다. 
  • 만일 생성과정에서 초기 input이 필요한 경우가 있는데 이때는 initialize() 메소드를 따로 빼든지 해야해서 좀 골치 아파진다. 
  • Singleton이 많으면 life cycle 동안 상주하는 메모리가 많아진다. 또 자체적으로 thread safe하게 만들어야 하므로 synchronized 범벅이 되어서 성능 하락을 가져올 수 있다. 




댓글 없음:

댓글 쓰기