싱글톤이란?
싱글톤이란?
- 싱글턴 패턴(Singleton Pattern)은 인스턴스가 오직 하나만 생성되는 것을 보장하고 어디에서든 이 인스턴스에 접근할 수 있도록 하는 디자인 패턴.
싱글톤의 문제점
- 다중 스레드 애플리케이션의 경우에 1개 이상의 인스턴스가 만들어지는 문제가 있다.
- 클래스가 상태를 유지해야 하는 경우에 문제가 된다.
해결 방법
-
정적 변수에 인스턴스를 만들어 바로 초기화하는 방법 ex) private static Printer printer = new Printer();
-
인스턴스를 만드는 메서드에 동기화하는 방법.
ex) public synchronized static Priner getPrinter(){ if(printer == null){ printer = new Printer(); } return printer; }
ex) public void print(String str){ synchronized(this){ counter++; System.out.println(str + counter); } }
etc
- 굳이 싱글턴 패턴을 사용하지 않고 정적 메서드로만 이루어진 정적 클래스(static class)를 사용해도 동일한 효과를 얻을 수 있다.
- 그러나 정적 메서드는 인터페이스에서 사용할 수 없다.