- 학습 목표 1 : 자바 싱글톤 이해하기
전체 프로그램에서 단 하나의 객체만 생성하도록 보장하는 디자인 패턴
-
필요성
- 객체를 여러 개 생성하면 메모리 낭비가 발생할 수 있다.
- 객체를 여러 개 생성하면 객체 간의 데이터 불일치 문제가 발생할 수 있다.
-
사용 목적
- 정보를 보관하고 공유하고자 하는 클래스가 한 번의 메모리에만 할당되고 그 할당한 메모리를 객체로 관리하기 위해
- 객체의 일관된 상태를 유지하고 전역에서 접근 가능하도록 하기 위해
- 메모리 낭비를 방지하기 위해
- 정보 공유 차원에서 변수 관리, 즉 동기화에 유리 하다.
-
구현 방법
- 생성자를 private으로 선언 하여 외부에서 new 키워드로 객체를 생성할 수 없도록 막는다.
- 자신의 타입인 정적 필드를 하나 선언 하고 자신의 객체를 생성해 초기화한다.
- 외부에서 호출할 수 있는 정적 메소드인
getInstance()
를 만들어 자신의 객체를 반환 한다.
public class 클래스 { // 정적 필드 private static 클래스 instance = new 클래스(); // 생성자 private 클래스() {} // 정적 메소드 public static 클래스 getInstance() { return instance; } }
-
getInstance()
외부에서 객체를 유일한 방법은 정적 메소드인getInstance()
를 호출하는 것이다.클래스 객체1 = 클래스.getInstance(); 클래스 객체2 = 클래스.getInstance();
- 객체1과 객체2는 동일한 객체를 참조한다.
-
단점
- 전역에서 접근을 허용하기 때문에 해당 인스턴스에 의존하는 경우 결합도가 높아질 수 있다.
- 결합도 증가로 인해 유닛 테스트에서 테스트하기 어려울 수 있다.
- 잘못 구현된 경우 멀티스레드 환경에서 문제가 발생할 수 있다.
- 스크럼 중 완료한 작업:
자바 싱글톤 이해하기
- 상세히 알지 못했던 개념을 조사하고 정리하면서 싱글톤 패턴에 대해 이해할 수 있었다. 자주 사용될법한 패턴인데 아직 직접 사용해보지는 않아서 이후에 사용해보면서 더 깊게 이해해보고 싶다!
- [이것이 자바다] 6.10 싱글톤
- 싱글톤 패턴