본문으로 바로가기

1. 싱글톤(Singleton)

단 하나의 객체만 만들도록 보장해야 하는 경우에 활용

 

1. 생성자 앞에 private 접근 제한자 선언 (외부에서 new 연산자로 생성자 호출 불가능)

public class Singleton {

    // 1. 생성자 앞에 private 접근 제한자 선언
    private Singleton() {
    
    }
}


2. 자신의 타입인 정적 필드를 선언하고 자식의 객체를 생성 (초기화, 필드도 접근 불가능하도록 private 선언)

public class Singleton {

    // 2. 자신의 타입인 정적 필드를 선언하고 자식의 객체를 생성
    private static Singleton singleton = new Singleton();

    // 1. 생성자 앞에 private 접근 제한자 선언
    private Singleton() {
        
    }
}

 

3. 정적 메소드를 선언하여 정적 필드에서 참조하고 있는 자신의 객체를 반환 (getInstance 메소드)

public class Singleton {

    // 2. 자신의 타입인 정적 필드를 선언하고 자식의 객체를 생성
    private static Singleton singleton = new Singleton();

    // 1. 생성자 앞에 private 접근 제한자 선언
    private Singleton() {

    }

    // 3. 정적 메소드를 선언하여 정적 필드에서 참조하고 있는 자신의 객체를 반환
    public static Singleton getInstance() {
        return singleton;
    }
}

 

4. 확인

Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();

if(singleton1 == singleton2) {
    System.out.println("같은 객체 입니다.");
}

'Backend > 객체 지향 프로그래밍' 카테고리의 다른 글

[Java] 패키지와 import문  (0) 2022.04.13
[Java] 상수 (final 필드)  (0) 2022.04.12
[Java] 정적 멤버  (0) 2022.04.09
[Java] 인스턴스 멤버  (0) 2022.04.08
[Java] 클래스의 구성 멤버 (메소드)  (0) 2022.04.07