본문 바로가기
공부/디자인 패턴

싱글톤(Singleton)

by xladmt 2024. 6. 7.

싱글톤이란?

싱글톤은 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다.

 - 프로그램 내에서 하나의 객체만 존재해야 한다.
- 프로그램 내에서 여러 부분에서 해당 객체를 공유하여 사용해야 한다.

 

 

싱글톤 클래스

싱글톤 클래스 다이어그램

 

singleton 클래스에서는 인스턴스를 하나만 만들 수 있는데, singleton은 static필드(클래스 변수)로 정의되고 Singleton 클래스의 인스턴스에서 초기화한다. 초기화는 Singleton 클래스를 로드할 때 한 번만 실행한다.

 

싱글톤 구현하기

public class Singleton {

    private static Singleton instance = new Singleton();
    
    private Singleton() {  // 생성자는 외부에서 호출못하게 private 으로 지정해야 한다.
    }

    public static Singleton getInstance() {
        return instance;
    }
}

Singleton 클래스의 유일한 인스턴스를 얻는 메소드로 getInstance가 제공된다. 

 

public class Main{
    public static void main(String[] args){
        Singleton obj1 = Singleton.getInstance();
        Singleton obj2 = Singleton.getInstance();
        
        if(obj1 == obj2){
            System.out.println("obj1과 obj2는 같은 인스턴스");
        }else {
            System.out.println("obj1과 obj2는 다른 인스턴스");
        }    
    }
}

// 결과
// obj1과 obj2는 같은 인스턴스

 

싱글톤 패턴을 사용하는 이유

1. 메모리 측면

싱글톤 패턴을 사용하게 된다면 한 개의 인스턴스만을 고정 메모리 영역에 생성하고 추후 해당 객체를 접근할 때 메모리 낭비를 방지할 수 있다.

2. 속도 측면

생성된 인스턴스를 사용할 때는 이미 생성된 인스턴스를 활용하여 속도 측면에 이점이 있다.

3. 데이터 공유가 쉽다

전역으로 사용하는 인스턴스이기 때문에 다른 여러 클래스에서 데이터를 공유하며 사용할 수 있다. 하지만 동시성 문제가 발생할 수 있어 이 점은 유의하여 설계해야 한다.

 

참고

 

싱글톤(Singleton) 패턴이란?

싱글톤 패턴은 객체의 인스턴스를 한개만 생성되게 하는 패턴입니다.

velog.io

 

 

싱글톤(Singleton) 패턴이란?

이번 글에서는 디자인 패턴의 종류 중 하나인 싱글톤 패턴에 대해 알아보자. 싱글톤 패턴이 무엇인지, 패턴 구현 시 주의할 점은 무엇인지에 대해 알아보는 것만으로도 많은 도움이 될 것이라

tecoble.techcourse.co.kr