1. 싱글톤 패턴(Singleton Pattern)

- 어떤 클래스의 객체는 오직 하나임을 보장 → 전역의 개념으로 객체 사용

- 객체의 생성을 제한하기 위해 사용

 

public class Singleton {
	// 싱글턴 패턴 - 객체를 1개만 만들어 유지하기 위한 디자인 패턴
	// 1. 외부에서 생성자를 사용할 수 없도록 생성자에 private을 붙임
	private Singleton() {}
	
	// 2. 자신의 클래스 내부에서 스스로의 객체 1개 생성
	// 이때 멤버변수는 힙에 할당된 객체 없이 쓸 수 있도록 static
	private static Singleton instance;
	
	static {
		instance = new Singleton();
	}
	
	// 3. 외부에서 이 클래스의 객체를 필요로 하는 경우
	// 2번에서 static으로 생성된 객체의 주소를 return
	public static Singleton getInstance() {
		if(instance == null) {
			instance = new Singleton();
		}
		return instance;
	}
}

private 접근 제한자는 외부에서 접근할 수 없어 원래는 new 키워드를 이용한 객체 생성이 불가능하다.

이 때 위와 같이 static 키워드를 이용하여 singleton 타입의 객체를 생성할 수 있다.

public class MainClass {
	public static void main(String[] args) {
		// Singleton 객체는 생성자가 private이므로 인스턴스 생성 불가
		// new 키워드로 객체 생성 및 조회가 불가능
		// Singleton s1 = new Singleton();

		Singleton s1 = Singleton.getInstance();
		System.out.println("s1의 레퍼런스 : " + s1);
		
		Singleton s2 = Singleton.getInstance();
		System.out.println("s2의 레퍼런스 : " + s2);
	}
}

위와 같이 Singleton 타입을 이용하여 객체를 생성할 수 있고, s1과 s2 모두 같은 주소를 참조하고 있는 것을 확인할 수 있다.

위와 같이 단 하나의 객체만을 생성해야 할 필요가 있을 때 Singleton 패턴을 이용한다.

'네트워크캠퍼스 > JAVA' 카테고리의 다른 글

추상화  (0) 2024.01.15
final  (0) 2024.01.15
사용제한자  (0) 2024.01.12
매개변수의 다형성  (0) 2024.01.11
배열의 다형성  (0) 2024.01.10

+ Recent posts