Post

Spring[싱글톤 패턴]

싱글톤 패턴

싱글톤 패턴이란?

여러가지의 소프트웨어 디자인 패턴중 하나로, 어떠한 클래스가 최대 한 번만 인스턴스를 생성하고, 그 인스턴스에 접근할 수 있는 전역적인 지점을 제공하는 패턴입니다.

즉, 클래스에 있는 생성자가 여러 차례 호출되더라도,
클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴입니다.

그래서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야한다는 점이 존재합니다.

그러므로 막는 방법은 private 생성자를 사용해서 외부에서 임의로 사용하지 못하도록 막아야 합니다.

싱글톤 패턴 예시 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 public class CAClass {

    private static AClass instance;

    // private 생성자로 외부에서의 객체 생성을 막음
    private AClass() {
    }

    // 인스턴스를 반환하는 메서드
    public static AClass getInstance() {
        if (instance == null) {
            instance = new AClass();
        }
        return instance;
    }

    // 다양한 기능이 추가될 수 있음.
 }

위의 같은 형식이 바로 싱글톤 패턴을 적용한 예제 코드입니다.

AClass 클래스는 어디서든지 getInstance() 메서드를 통해 하나의 인스턴스에 접근할 수 있습니다.

이렇게 하면 AClass가 하나만 존재하게 되어 자원이 효율적으로 사용되고 일관된 결과를 얻을 수 있습니다

하지만 단점은 존재합니다

싱글톤 패턴의 단점

  1. 전역 상태 유지
  2. 테스트 어려움
  3. 다중 스레드 환경에서의 안정성
  4. 강한 결합도
  5. 코드의 복잡성 증가

이 외에도 여러 많은 문제점을 가지고 있습니다.

이런 문제점을 해결하기위해 스프링 프레임워크는 스프링 컨테이너를 제공하여 싱글톤 패턴의 일부 문제를 해결합니다.

This post is licensed under CC BY 4.0 by the author.