본문 바로가기
study/JAVA

싱글톤(Singleton) 생성과 얻는법

by Elfen Lied 2022. 2. 14.
반응형

- 싱글톤 만드는 방법

라이브러리 클래스를 하나 만들어준다. (main 메서드 없는 클래스)

 

1. 외부에서 new 연산자로 생성자를 호출 못하게 막는다. (private 접근 제한자를 생성자 앞에 붙임)

public class Singleton {
	private static Singleton singleton = new Singleton();
}

 

2. 클래스 자신의 타입으로 정적 필드 선언하고, 자신의 객체를 생성하고 초기화한다.

   (private 를 붙여 외부에서 필드 값 변경 못하게 함.)

public class Singleton {
	private static Singleton singleton = new Singleton();
	
	private Singleton() {
	}
}

 

3. 외부에서 호출 가능하게 하는 정적 메소드 getInstance() 를 선언

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

return 타입으로 자신(Singleton) 을 넣어준다.

즉 필드가 참조하는 객체를 리턴한다.


 

- 싱글톤 얻는 방법

실행 클래스를 만든다 ( main 메소드 추가)

 

1. 우선은 에러가 나는 방식

public class SingletonExample {
	public static void main(String[] args) {
		// 이 방식으론 접근 불가
		Singleton obj1 = new Singleton();
	}

 

외부에서 new 연산자로 생성자를 호출하면 컴파일 에러가 난다.

이유는, 생성자 앞에 private가 있기때문에 접근이 불가해서다.

 

2. 제대로 된 접근 방식

public class SingletonExample {
	public static void main(String[] args) {
		Singleton obj1 = Singleton.getInstance();
		Singleton obj2 = Singleton.getInstance();
		
		if(obj1 == obj2) {
			System.out.println("같은 singleton 객체다.");
		} else {
			System.out.println("같은 singleton 객체가 아니다.");
		}
	}
}

new가 아닌 Singleton 클래스로 접근을 한다.

if문으로 obj1 과 obj2 가 참조하는 객체가 같은지 확인해본다.

 

ctrl + f11 을 눌러서 java application 을 실행해보자.

obj1과 obj2는 같은 객체를 참조하는것을 알 수 있다.

반응형

'study > JAVA' 카테고리의 다른 글

어노테이션(Annotation)  (0) 2022.02.22
Getter와 Setter  (0) 2022.02.18
접근 제한자( Access Modifier)  (0) 2022.02.18
상수(static final)  (0) 2022.02.14
final 필드  (0) 2022.02.14

댓글