되자!백엔드개발자
Java(자바) - Singleton(생성자의 접근제어자) 본문
Singleton 클래스
생성자를 private으로 설정하여 직접 인스턴스를 생성하지 못하게 하고 public메서드를 통해 인스턴스에 접근하게 함으로써 사용할 수 있는 인스턴스의 개수를 제한하는 것.
Singleton클래스는 final클래스로 명시해 줄 것을 권장
이 클래스는 다른 클래스의 조상이 될 수 없다.
상속받은 클래스의 인스턴스를 생성할 때 조상 클래스들의 생성자들이 호출되기 때문이다.
그렇기에 final로 명시해주어 더이상 상속할 수 없는 클래스라는 것을 알리는 것이 좋다.
final class Singleton{
public static Singleton s = new Singleton();
private Singleton() {} // 생성자
public static Singleton getSingleton() { // 객체 생성 없이 호출해야함
return s; // 무조건 static이어야한다.
}
}
public class SingletonTest {
public static void main(String[] args) {
//Singleton a = new Singleton(); 생성자가 private이므로 에러
Singleton a = Singleton.getSingleton();
Singleton b = Singleton.getSingleton();
if(a == b)
System.out.println("instance는 하나만 존재");
}
}
static 필드는 프로그램이 시작할 때 단 한번 호출되기 때문에
getSingle()로 호출해도 항상 같은 인스턴스의 주소를 반환한다.
'개발공부 > JAVA' 카테고리의 다른 글
Java(자바) - 익명클래스(annonymous class) (0) | 2022.08.12 |
---|---|
JAVA(자바) - 추상클래스/인터페이스 (0) | 2022.08.12 |
Java(자바) - 다형성3(매개변수의 다형성) (0) | 2022.08.11 |
Java(자바) - 변수의 초기화(명시적 초기화, 초기화 블럭) (0) | 2022.08.10 |
Java(자바) - 이름 붙은 반복문 (0) | 2022.08.10 |