선릉역 1번 출구

3. 싱글톤 패턴(singleton pattern) 본문

Language/Java

3. 싱글톤 패턴(singleton pattern)

choideu 2023. 11. 21. 13:56

싱글톤 패턴이란?

- 프로그램에서 인스턴스가 단 "한 개"만 생성되어야 하는 경우 사용하는 디자인 패턴

- static 변수, 메서드를 활용하여 구현할 수 있음

 

예시

- 타임존에 의해 제공되는 날짜(시분초가 동일해야하기 때문에 인스턴스는 한개여야 함)

 

1. 외부에서 생성자를 마음대로 new할 수 없도록 private 생성자를 만듦

 

2. 클래스 내부에 유일한 인스턴스를 하나 생성함

 

3. 해당 인스턴스를 활용할 수 있는 static getInstance 메소드 생성

- 왜 static 이어야 하는가? static이 아니라면, 인스턴스 생성 후 메소드 호출이 가능하기 때문임

public class MySingleton {
    private static MySingleton instance = new MySingleton();

    private MySingleton() {
        // private 생성자
    }

    public static MySingleton getInstance() {
        return instance;
    }

    // 다른 메소드들...
}

여기를 보면 MySingleton의 instance는 static이기 때문에 프로그램이 로드될 때 생성되어 메모리에 위치한다. 그렇기 때문에 해당 인스턴스를 참조하려면 instance.getInstance()가 가능할 수 있지만 여기서 private로 선언되어 instance.getInstance()로 호출은 불가능하다. getInstance() 메소드에 static을 붙여 클래스 이름으로 인스턴스 참조를 진행한다.

※ 해당 instance를 private static이 아닌 public static으로 선언하면 해당 인스턴스는 외부에서 직접 접근이 가능하기 때문에 싱글톤 패턴을 사용하는 의도를 깨뜨릴 수 있음 => private로 선언하고 특정 메소드를 통해 "간접적"으로 접근하는 것이 핵심

public과 private 선언의 차이

'Language > Java' 카테고리의 다른 글

5. 배열의 정규화  (0) 2023.11.21
4. 얕은 복사 vs 깊은 복사  (2) 2023.11.21
2. 헷갈리는 문법 정리  (0) 2023.11.21
1. 개발 환경 셋팅하기  (0) 2023.11.17
JAVA(3)  (0) 2023.01.16
Comments