Singleton pattern (싱글톤 패턴)
싱글톤 패턴이란 디자인 패턴기법중 하나로 인스턴스를 하나만 만들어서 사용하는 기법이다.
자바의 경우 static 변수와는 비슷하지만 클래스를 따로만들어 관리하게 된다.
생성자를 접근제한자로 막아두고 생성을 불가능하게하여 static 변수같이 사용할수있다.
싱글톤 패턴은 인스턴스를 하나만 만들고 재사용하게 한다.
getter의경우 접근제한자가 public 으로 어느곳에서든 접근 가능하다.
기본적인 싱글톤 패턴
1 2 3 4 5 6 7 8 9 | public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { } public static Singleton getSingleton() { return instance; } } | cs |
사용예
Singleton 클래스
1 2 3 4 5 6 7 8 9 10 11 12 | public class Singleton { private static Singleton instance = new Singleton(); int intA; String strB; private Singleton() { } public static Singleton getSingleton() { return instance; } } | cs |
TestClass (main 클래스)
1 2 3 4 5 6 7 8 9 10 11 | public class TestClass { public static void main(String[] args) { Singleton inst1 = Singleton.getSingleton(); inst1.intA = 10; inst1.strB = "HelloWorld!!"; Singleton inst2 = Singleton.getSingleton(); System.out.println(inst2.intA); System.out.println(inst2.strB); } } | cs |
결과
주의
싱글톤 패턴에 새로운 인스턴스를 생성할때 생성자의 접근제한자가 private이기 때문에 생성할수없다.
getter를 이용하여 하나의 인스턴스에 접근하고 참조 변경한다.
기본적인 싱글톤 패턴의 코드가 매우 간결하고 구현하기도쉽지만 사용하지않아도 한개의 인스턴스가 생성된다는 점이다.
작은 클래스의 경우 상관이없겟지만 클래스가 켜질경우 낭비가 발생하게 된다.
이에 낭비를 줄이기위해서는 synchronized 를 이용하여 구현할수있는데 프로그램에서 한번도 호출하지않는다면
인스턴스가 생성되지않고 낭비를 막을수 있다 .
하지만 이 방법의 경우 synchronized를 이용하여 성능의 하락이 발생할수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 | public class Singleton { private static Singleton instance; private Singleton() { } public static synchronized Singleton getSingleton(){ if(instance==null) { instance = new Singleton(); } return instance; } } | cs |
'공부 > Java' 카테고리의 다른 글
MYSQL JDBC 연결오류 (0) | 2016.11.15 |
---|---|
[자바] JDBC 오류 java.lang.ClassNotFoundException 해결법 (2) | 2015.11.09 |
[자바 GUI] 자바 레이아웃 정렬하기 (0) | 2015.11.08 |
[자바 GUI] 자바 JTabbedPane 활용 (0) | 2015.11.08 |
[자바] 사용자 문서 경로 얻기 (0) | 2015.11.02 |