Language/Java - 심화

Java(심화) - 싱글톤

ShinyOcean 2022. 1. 16. 20:19

 

안녕하세요 :)

 

Shiny Ocean 입니다.

 

이번 포스팅에서 다루어볼 내용은 싱글톤입니다.

 

 

개요

싱글톤이란 하나의 어플리케이션 내에서 단 하나만 생성되는 객체를 말합니다.

new연산자를 통해 생성자를 호출할수 없도록 막기 위해 private 접근제한자를 통해 생성자를 만들고

클래스 자신의 타입으로 static 필드를 선언하여 자신의 객체를 생성해 초기화 합니다.

이렇게 한다면 외부에서 new 연산자를 통한 동일객체 다중 생성을 막을수 있습니다. 즉 메모리의 활용도가 좋아지고

단순한 필요성의 객체의 경우 간결한 사용이 가능해집니다.

 

 

예제

아래의 예제는 싱글톤을 선언하고 이를 메인에서 불러온것이다.

싱글톤에서 가장 핵심이 되는것 세가지 아래와 같다.

 

1. 생성자의 접근제한자를 private으로 하여 객체의 접근을 new연산자로 할수 없게 함

2. 정적 필드값으로 하나의 객체를 생성, 이또한 private으로 하여 외부의 접근 차단

3. 생성된 하나의 객체만을 객체 호출시 리턴

 

class Singleton {
	private static Singleton single = new Singleton();
	private Singleton() {
		
	}
	static Singleton getInstance() {
		return single;
	}

}


public class Exam {
	public static void main(String[] args) {
		//private 로 접근제한되기때문에 아래처럼 할시 컴파일 오류
		//Singleton single = new Singleton();
		
		Singleton obj1 = Singleton.getInstance();
		Singleton obj2 = Singleton.getInstance();
		
		if(obj1 == obj2) {
			System.out.println("같은 객체, singleton임");
		}
	}

}

 

 

위와 같은 과정으로 얻어낸 obj1과 obj2는 싱글톤 필드내의 같은 객체임으로 맨 아래의 if 문의 결과는 참인값으로 판별될것입니다. 결과는 아래와 같습니다.