자바의 디자인 패턴 중 하나인 싱글톤 패턴에 대해 알아보겠습니다.
오랜 기간 동안 수많은 개발자들의 개발 방법을 조사하여 발견된 코드 설계 노하우를 정리한 모음집 입니다.
객체의 인스턴스를 하나만 갖도록 하는 패턴입니다.
public class ClassName {
// 1. 메소드 호출 시 반환할 static 인스턴스를 생성한다.
private static ClassName singleton = new ClassName();
// 2. 생성자를 private로 설정해서 다른 클래스에서의 객체 생성을 막는다.
private ClassName() {}
// 3. 다른 클래스에서 싱글톤 패턴이 적용된 클래스에 접근하기 위해 객체 생성 대신 사용할 static 메소드를 만든다.
static ClassName getInstance() {
// 미리 만들어둔 인스턴스를 리턴한다.
return singleton;
}
}
이렇게 싱글톤 패턴을 구현해 놓으면 다른 클래스에서는 new를 이용해 ClassName의 인스턴스를 새로 만드는 것이 불가능해 집니다.
따라서 ClassName의 인스턴스에 접근하기 위해서는 ClassName singletonVar = ClassName.getInstance();로 메서드를 호출해 반환된 객체를 이용해서만 접근이 가능하다는 것이죠.
getInstance는 이미 만들어진 단 하나의 객체만을 반환하기 때문에 함수 호출을 여러번 하더라도 매번 같은 객체를 받게 됩니다.