Singleton 패턴이란?
하나의 클래스에서 하나의 인스턴스만 생성하도록 보장하는 패턴
생성자를 private 으로 선언하여 외부에서 객체 생성을 막는다.
public class Singleton{
private static Singleton singleton = new Singleton();
private Singleton(){
System.out.println("인스턴스를 생성했습니다.");
}
public static Singleton getInstance(){
return singleton;
}
}
singleton 멤버 변수:
static으로 선언됨 > Singleton 클래스 로드시 한 번만 실행됨
singleton 생성자:
private 메소드로, 외부에서 호출불가(==객체 생성 불가)
public class Main{
public static void main(String[] args){
System.out.println("Start.");
Singleton obj1 = Singleton.getInstance(); // 이때 singleton변수가 메모리에 load
Singleton obj2 = Singleton.getInstance();
if(obj1 == obj2){
System.out.println("obj1과 obj2는 같은 인스턴스입니다.");
} else{
System.out.println("obj1과 obj2는 같은 인스턴스가 아닙니다.");
}
System.out.println("End.");
}
}
코드실행 결과는?
"obj1과 obj2는 같은 인스턴스입니다." 출력
obj1 == obj2 -> 메모리 주소 비교 연산자
obj1.equals(obj2) -> type,값 비교 연산자(주소 x)
obbj 1,2는 싱글톤패턴으로 인해 같은 인스턴스를 가리킴!
유일한 하나의 인스턴스는 언제 생성되는가
프로그램 실행 후, 처음 Singleton.getInstance( ) 메소드가 호출 되면,
Singleton 클래스가 메모리에 로드되어 초기화되고,
이 때 static 필드인 singleton 필드가 초기화된다.
+enum을 이용한 싱글턴 패턴
'복습 > 소프트웨어디자인패턴' 카테고리의 다른 글
| Bridge 패턴 (0) | 2026.04.17 |
|---|---|
| Prototype 패턴 (0) | 2026.04.17 |
| Factory Method 패턴 (1) | 2026.04.17 |
| Template Method 패턴 (0) | 2026.04.17 |
| Adapter 패턴 (0) | 2026.04.17 |