1. 싱글톤(Singleton)이란?
- 전체 프로그램에서 단 하나의 객체(인스턴스)만 만들도록(생성하도록) 보장해야할 때가 있다. 그래서 단 하나만 생성된다고 해서 싱글톤(Singleton)이라고 부른다.
즉, 싱글톤은 공용으로 사용하는 클래스에 적용하면 알맞다.
2. 싱글톤(Singleton) 만드는 법
- 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야한다. 이유는 생성자를 호출한 만큼 객체가생성되기 때문이다.
(1) 자신의 타입인 정적필드를 하나 선언하고 자신의 객체를 생성해 초기화한다. 그리고 private 접근 제한자를 붙여 필드 값을 변경하지 못하도록 막는다.
< ex) private static 클래스명 singleton = new 클래스명(); >
(2) 생성자자 앞에 private 접근 제한자를 붙여준다.(외부에서 생성자 호출을 막기 위해)
(3) 외부에서 호출할 수 있는 정적 메소드인 getInstance()를 선언하고, 정적필드에서 참조하고 있는 자신의 객체를 리턴해준다.
< ex) static 클래스명 getInstance() { return singleton; } >
singleton.java
public class 클래스명 {
//정적 필드
private static 클래스명 singleton = new 클래스명();
//생성자
private 클래스명() { }
//정적 메소드
static 클래스명 getInstance() {
return singleton;
}
외부에서 객체를 얻는 유일한 방법은 getInstance() 메소드를 호출 하는 방법 뿐이다.
getInstance() 메소드는 단 하나의 객체만을 리턴함으로 변수1과 변수2는 동일 객체를 참조한다.
클래스명 var1 = 클래스명.getInstance();
클래스명 var2 = 클래스명.getInstance();
'Software Engineering > Design Pattern' 카테고리의 다른 글
Observer Pattern(관찰자 패턴) (0) | 2023.04.20 |
---|---|
Template Method Pattern(템플릿 메서드 패턴) (0) | 2016.04.26 |
Adapter Pattern (0) | 2016.04.25 |
Iterator Pattern (0) | 2016.04.21 |