티스토리 뷰
싱글톤 패턴은 애플리케이션 젙체에서 단 한 개의 객체만 생성해서 사용하고 싶을 때 사용할 수 있다.
이 패턴의 핵심은 생성자를 private 접근 제한해 외부에서 new 연산자로 생성자를 호출할 수 없도록 막는 것이다.
즉, 생성자를 외부에서 호출할 수 없으니, 외부에서 마음대로 객체를 생성하는 것이 불가능해진다.
대신 싱글톤 패턴이 제공하는 정적 메소드를 통해 간접적으로 객체를 얻을 수 있다.
public class 클래스 {
// private 접근 권한을 갖는 정적 필드 선언과 초기화
private static 클래스 singleton = new 클래스(); // 1
// private 접근 권한을 갖는 생성자 선언
private 클래스 {};
// public 접근 권한을 갖는 정적 메소드 선언
public static 클래스 getInstance() { // 2
return singleton;
}
}
(1) 에서는 자신의 타입으로 정적 필드를 선언하고 미리 객체를 생성해서 초기화 시킨다.
그리고 private 접근 제한자를 붙여 외부에서 정적 필드값을 변경하지 못하도록 막는다.
(2) 에서는 정적 필드값을 리턴하는 getInstance() 정적 메소드를 public으로 선언하였다.
즉, 외부에서 객체를 얻는 유일한 방법은 getInstance() 메소드를 호출하는 것이다.
getInstance() 메소드가 리턴하는 객체는 정적 필드가 참조하는 싱글 톤 객체이다.
따라서 아래 코드에서 변수1과 변수2가 참조하는 객체는 동일한 객체가 된다.
클래스 변수1 = 클래스.getInstance();
클래스 변수2 = 클래스.getInstance();
----------------------------
사실 작년 여름에 싱글톤 패턴을 공부했었지만, 그때는 기본기가 너무 부족했기에 제대로 이해하지 못했다... ㅋㅋ
작년 여름 글을 읽으면서 뭔가 내가 성장했다는 느낌을 받았다...! 😁
( 아래는 작년에 쓴 싱글톤 패턴 글이다. 제대로 마무리를 하지 못했었다 ㅎㅎ )
https://kodong8774.tistory.com/30
자바 - 싱글톤 패턴(Singleton Pattern) → 하나의 객체를 전역에서 사용하기.
백엔드를 구성하는 과정 중에서, 아직 DB에 연결하는 단계까지는 못했고, 리스트를 활용해서 DB역할을 하려고 했다. 근데 나도모르게 요청을 받을 때마다 새로운 객체를 생성하도록 코드를 짜서,
kodong8774.tistory.com