본문 바로가기
Software Tech/Spring (feat.JAVA)

Singleton Pattern (싱글톤 패턴)

by SuperDev 2024. 10. 21.

싱글톤 패턴이란, 클래스의 인스턴스가 프로그램 전체에 걸쳐 단 하나만 존재하도록 보장하는 구조 입니다. 예를 들어 여러 객체가 생성된다면 어떤 객체에 있는 정보가 정확한 정보인지 알 수가 없기 때문에 문제가 발생합니다.

이런 부분은 싱글톤 패턴으로 구현하여 하나의 객체만 존재하도록 해야합니다.

 

 

그렇다면 정적(static) 클래스를 사용하는 것과 어떻게 다를까요?

# Singleton Pattern class static class
초기화(생성) 시점 필요한 시점에 생성해서 리소스를 효율적으로 사용 가능합니다. 프로그램 실행 시점에 자동으로 초기화 되며, 실행 동안에 메모리에 상주하게 됩니다.
확장성 상속, 인터페이스 구현이 가능하여 확장성을 가집니다. 정적 클래스는 상속, 인터페이스 구현이 불가합니다.
호출 Instance 변수를 통하여 호출합니다. 클래스명.함수로 쉽게 호출이 가능합니다.
생성자 일반 클래스처럼 생성자 사용이 가능합니다. 정적 클래스는 정적 생성자만 가질 수 있습니다.
어디에 쓰면 좋을까? 원하는 시점에 생성할 수 있고 확장성이 필요한 클래스 어디서나 필요하고, 간단한 역할을 하는 클래스

 

 

필요한 시점에 자원을 할당하여 재사용이 가능한 클래스 객체를 직접 생성해봅시다. (static은 쓰지 않을 것입니다.)

싱글톤 객체를 생성하고, 그 안에 싱글톤 인스턴스를 저장할 private 필드를 생성합니다.

private를 통해 외부에서 인스턴스를 생성할 수 없도록 합니다.

// 싱글톤 패턴 객체 생성
public class Singleton {
	
    // 싱글톤 인스턴스를 저장할 private 필드
    private Singleton instance;
    
    // private 생성자로 외부에서 객체 생성 불가능하게 설정
    private Singleton() {}
    
    // 싱글톤 인스턴스를 반환하는 메서드
    public Singleton getInstance() {
    	if(instance == null) {
        	instance = new Singleton();
        }
        return instance;
    }
}
728x90