싱글톤

A Code AM·2020년 3월 3일
1

수업(20200212~)

목록 보기
1/12

싱글톤(singleton pattern)

: 특정 클래스의 인스턴스를 하나만 만들어서 어디서든지 그 인스턴스에 접근할 수 있도록(전역) 메소드를 제공하는 패턴

< 사용 이유 >

  • DBCP처럼 한 객체를 여러개 생성해서 사용해야 하는 상황에 많이 사용한다.
  • 위 같은 상황에 인스턴스를 여러개 만들면 제대로 작동하지 않거나 메모리 낭비하는 작업들이 있는데 싱글톤으로 만들면 컴파일 단계에서 하나만 가지도록 강제할 수 있다.
  • 전역에서 접근할 수 있는 메소드를 만들고 getInstance를 통해 이전 작업 전체에 접근할 수 있으며 누구에게나 동일한 인스턴스를 반환하고 다른 클래스의 인스턴트들이 데이터를 공유하기가 쉽다(상속가능).
  • 클래스가 최초 한 번만 메모리를 할당하고(static) 두 번째 이용시부터 객체 로딩 시간이 현저하게 줄어서 성능이 좋아진다.
  • 싱글톤을 실제로 필요로 할 때까지 초기화를 미루고(게으른 초기화) 사용하지 않으면 초기화되지 않아 메모리와 CPU 사용량을 줄인다.

Q. 게으른 초기화가 뭔가요
A. '게으른'은 인스턴스 생성을 프로그램 시작점에 하는게 아니라 메소드 호출 시점에 생성하기 때문에 붙여졌다. 먼저, 심각한 초기화(Eager Initialization)는 기본원칙으로 static 선언해서 클래스 파일이 JVM에 로드 될 때 곧바로 객체를 생성하게 하는 구조인데 객체를 생성하고 프로그램이 시작되므로 사용하지도 않았는데 공간을 차지 할 수 있다. '게으른 초기화'는 클래스가 초기화될 때 동시에 모두 초기화 하는것이 아니고 필요한 순간이 올 때까지 최대한 초기화를 미룬다는 의미이다.

profile
배움기록

0개의 댓글