싱글톤 패턴이란?

Jaeyoo (유재형)·2022년 2월 20일
0
post-thumbnail

싱글톤 패턴


정의

  • 어떤 클래스에서 만들수있는 인스턴수 수를 하나로 제한하는 디자인 패턴
  • 다음 조건을 충족하는 개체에 적합
    1. 프로그램 실행중 최대 하나만 있어야함
    2. 이 개체에 전역적으로 접근 가능
  • 프로그램 설정, 파일 시스템과 같은 하나만 있어야하는 것들

클래스 다이어그램

  • private 생성자
  • static 메서드를 통해서만 객체를 얻어올수있다.

코드

public class Singleton {
    private static Singleton instance;
    
    private Singleton(){
    }
    
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
  • 멤버 변수로 instance 있다.
    • static이고 singleton의 객체이다.
  • 생성자가 private 이므로 외부에서 new 키워드로 생성할 수 없다.
    • 즉 이 클래스로 객체를 하나만 만들 수 있다.
  • getInstance()로 객체를 반환 받을 수 있다. 항상 같은 인스턴스를 반환한다.

Static 과 비교


static과 유사해보이지만 다른점이 있다.

static으로 못하는일

  • 다형성 사용 못한다.
  • 객체의 생성 시점을 제어할수없다.
    • static은 프로그램 실행시 초기화

싱글턴 초기화 순서 보장

  • static과 달리 싱글턴은 초기화의 순서를 보장할수있다.
  • A B C 가 있을경우 만약 B C A 순으로 초기화가 되어야하는 api 조건이 있을경우 순서대로 호출하면 된다.
B.getInstance();
C.getInstance();
A.getInstance();
profile
기록과 반복

0개의 댓글