싱글톤 패턴(Singleton Pattern)은 클래스의 인스턴스를 하나만 생성해
어디서든 동일한 인스턴스를 사용할 수 있도록 보장하는 디자인 패턴이다.
1. 하나의 인스턴스
클래스의 인스턴스가 하나만 생성되고, 이후에는 그 인스턴스를 재사용한다.
2. 글로벌 접근
어플리케이션 내 어디서든 동일한 인스턴스에 접근한다. -전역적 공유
pulic class Singleton{
// 필드
private static Singleton instance;
// 생성자
private Singleton() {}
// 인스턴스를 반환하는 메서드
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
public class Main{
public static void main(String[] agrs){
Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
// 동일한 인스턴스인지 참조를 비교해 확인하기
if(singleton1 == singleton2){
System.out.println("both references point to the same instance");
}
}
}
1. private static Singleton instance
instance는 클래스의 유일한 인스턴스(싱글톤 인스턴스)를 저장한다.private으로 선언하여 외부의 접근을 제한한다.2. private Singleton(){}
private으로 선언해 외부에서 인스턴스를 생성할 수 없도록 제한한다.3. public static Singleton getInstance(){...}
null) 인스턴스를 생성하고, 이후에는 기존 인스턴스를 반환한다.getInstance()메서드를 통해 생성할 수 있다.static키워드는 클래스 멤버 선언 시 사용되며, 해당 멤버가 클래스 자체에 속함을 의미한다.
이를 통해 인스턴스가 아닌 클래스 레벨에서 접근할 수 있도록 한다.
1. 클래스 레벨의 멤버
static으로 선언된 필드와 메서드는 클래스에 속하며,static멤버를 공유한다.2. 인스턴스 생성이 불필요
static멤버는 인스턴스를 생성하지 않고도 클래스 이름으로 직접 접근할 수 있다.싱글톤의 목적은 클래스의 인스턴스를 단 하나만 생성하여 전역에서 사용하도록 하는 것이다.
따라서 싱글톤의 목적을 위해 static 키워드를 사용하여 단일 인스턴스를 관리하고,
클래스 레벨에서 인스턴스를 제공함으로써 전역에서 이 인스턴스를 사용할 수 있도록 한다.
static 필드를 통해 유일한 인스턴스를 저장하고static 메서드를 통해 인스턴스에 접근하도록 해 싱글톤의 목적을 달성한다.