싱글턴 패턴에 대한 고찰
안드로이드 펍에서 아카마린님이 남긴 글을 퍼왔습니다. 양해바랍니다. 책을 읽다가 유용한 정보를 발견하여 남깁니다. Head First Design Patterns 中에서.. 싱글턴을 모르시는 분과 이미 알고 계시는 분들에게 큰 도움이 되리라 생각합니다. 싱글턴이란? 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴입니다. 일반적인 싱글턴 패턴 구현법 01. public class Singleton { 02. private static Singleton uniqueInstance; 03. private Singleton() {} 04. 05. public static Singleton getInstance() { 06. if (uniqueInstance == null ) { 07. uniqueInstance = new Singleton(); 08. } 09. return uniqueInstance; 10. } 11. ....... 12. ....... 13. } 일반적으로 2개 이상의 객체가 만들어지면 안되는 클래스에서 많이 사용하는데 Singleton.getInstance() 이런식으로 접근을 하죠. 그럼 다른 객체에서 언제든지 인스턴스를 얻어와서 사용할 수 있게 됩니다. 하지만 이 코드에는 문제점이 있습니다. 싱글턴은 유일무이한 객체를 위한 패턴이지만 2개 이상의 다중스레드에서 접근하게 될 경우, 인스턴스가 중복 생성될 수 있습니다. 이걸 해결하기 위한 방법은 간단합니다. 1. public static synchronized Singleton getInstance() { ...