개요

 프로그램을 실행하면서 인스턴스가 하나만 필요한 클래스가 있다. 예를 들어 시스템의 설정을 저장한 클래스나 OS시스템을 표현한 클래스 등 인데 이런 클래스들의 인스턴스 생성을 코드에서 new 연산자를 한 번만 사용해서 생성하기보단 인스턴스가 하나만 존재하지 않도록 보증해주는 패턴이 Singleton패턴이다. 이름 그대로 요소가 1개 밖에 없는 집합을 말한다.

 싱글톤 패턴의 구조는 인스턴스를 하나만 생성하고 싶은 클래스의 생성자의 접근제어자를 private으로 설정하고, 클래스내에서 static으로 인스턴스를 생성해놓는 것이다. 그리고 인스턴스가 필요할 때마다 static으로 생성되어 있는 인스턴스를 메서들을 통해 반환하는 식으로 구현된다.

 

역할

Singletone 역할

  자기 자신의 인스턴스를 static으로 갖고, private의 생성자를 스스로 한번만 호출한다.

 

 

이득 및 유의사항

 인스턴스를 하나만 생성하도록 제한함으로써 여러 인스턴스가 메모리상에 존재하며 서로 영향을 미치거나 의도치 않은 버그가 발생할 가능성 자체를 막아주기 때문에 개발자가 신경써야할 부분이 줄어든다.

 싱글톤 클래스의 인스턴스가 생성되는 시기는 처음으로 해당 인스턴스를 호출될 때 이다.

 

예제 코드

//Singleton
package singleton;

public class Singleton {
	private static Singleton singleton = new Singleton();
	
	private Singleton() {
		System.out.println("인스턴스 생성");
	}
	
	public static Singleton getInstance() {
		return singleton;
	}
}


//Tester
package singleton;

public class SingletonTester {

	public static void main(String[] args) {
		System.out.println("시스템 시작");
		Singleton s1 = Singleton.getInstance();
		Singleton s2 = Singleton.getInstance();
		
		if(s1 == s2) {
			System.out.println("두 인스턴스는 동일한 인스턴스 입니다.");
		}
	}

}

'디자인 패턴' 카테고리의 다른 글

7. Builder 패턴  (0) 2020.12.04
6. Prototype 패턴  (0) 2020.12.03
4. FactoryMethod 패턴  (0) 2020.12.01
3. Template Method 패턴  (0) 2020.11.30
2. Adapter 패턴  (0) 2020.11.29

+ Recent posts