본문 바로가기
Develop/Design Pattern

싱글톤 패턴이란?

by jaeyoungb 2022. 7. 26.

싱글톤 패턴(Singleton Pattern)은 바탕이 되는 하나의 클래스에 딱 하나의 인스턴스를 생성한다.

 

생성된 인스턴스 하나를 가지고 다른 모듈들이 공유하며 사용한다.

 

인스턴스를 여러 번 생성할 때 들어가는 비용을 줄일 수 있다.

 

그러나, 의존성이 높아지는 단점이 존재한다.

 

(이러한 단점은 '의존성 주입' 을 통해 해결할 수 있다.)

 

package singleton;

class Singleton {

    private static Singleton instance = new Singleton();

    private Singleton() {}

    public static Singleton getInstance() {
        if(instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

public class SingletonTest {

    public static void main(String[] args) {

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

        System.out.println(singleton1);
        System.out.println(singleton2);
    }
}

 

바탕이 되는 클래스 Singleton 이 있다.

 

이 클래스에서 private static 으로 인스턴스 하나(= instance) 를 생성해준다.

 

이 인스턴스(= instance) 는 추후에 여러 클래스에서 공유되며 사용된다.

 

그리고, 중요한 건 private 으로 기본 생성자를 하나 만들어준다.

 

static 으로 된 getInstance 도 하나 만들어주고, if 문을 이용하여 instance 값이 null 일 경우에는 새로운 객체를 생성해 넣어주고, null 이 아닐 경우에는 그대로 instance 를 반환해준다.

 

이제 public class 로 test 를 해볼 것이다.

 

여기서 singleton1 과 singleton2 이라는 이름으로 객체 2개를 생성해준다.

 

두 객체를 출력해보면, 동일한 하나의 객체를 공유하고 있음을 알 수 있다.

 

※ 이처럼, 하나의 인스턴스를 바탕으로 여러 모듈에서 공유를 하고 싶다면, 싱글톤 패턴을 적극 이용하면 된다.

 

'Develop > Design Pattern' 카테고리의 다른 글

옵저버 패턴이란?  (0) 2022.08.17
팩토리 패턴이란?  (0) 2022.07.27
디자인 패턴이란?  (0) 2022.07.25