싱글톤 패턴

헨도·2024년 7월 8일
0

SpringBoot

목록 보기
9/23
post-thumbnail
  • 자바에서는 새로운 객체를 만들 때, new 라는 메소드를 사용한다.
    new 를 5번 사용하면, 새로운 객체가 5개 생성된다.

싱글톤

  • 객체 1개를 뜻한다.

싱글톤 패턴

  • 객체 1개를 만드는 패턴이다.

즉, 메모리 절약을 위해 인스턴스가 필요할 때 똑같은 인스턴스를 새로 만들지 않고 기존의 인스턴스를 가져와 활용하는 기법

조건

  • 생성자 앞 private 를 붙여야 한다.
    (접근 제한으로 두어 외부에서 new 연산자로 생성자 호출을 막기 위해서)

코드

public class 클래스 {
	// private 접근 권한을 갖는 정적 필드 선언과 초기화
	public class 클래스 singleton = new 클래스();

	// private 접근 권한을 갖는 생성자 선언
    private 클래스 () {}
    // + 같은 class 안에서는 private 로 선언해도 생성자를 호출할 수 있다.
    
    // public 접근 권한을 갖는 정적 메소드 선언
    // 외부에서는 getInstance() 로 instance 를 반환한다.
    public static 클래스 getInstance() {
    	return singleton;
    }
}

사용

클래스 변수1 = 클래스.getInstance();
클래스 변수2 = 클래스.getInstance();

// 다른 변수에 인스턴스를 할당받았지만, 주소 값을 찍어보면 두 변수 모두 같은 인스턴스를 할당받음

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

1. 메모리 측면의 이점

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

2. 속도 측면의 이점

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

3. 데이터 공유가 쉽다.

  • 전역으로 사용하는 인스턴스이기 때문에 다른 여러 클래스에서 데이터를 공유하며 사용할 수 있다.
    하지만 그로 인해 동시성 문제가 발생될 수 있다.
profile
Junior Backend Developer

0개의 댓글