1. Singleton 패턴이란?
- 프로그램 전체에서 단 하나의 객체만 만들도록 보장하는 디자인 패턴.
- 메모리 절약, 데이터 일관성 유지 목적.
- 외부에서 new로 생성자 호출 방지 → 생성자를 private으로 선언.
- 객체에 접근하기 위한 유일한 방법으로 getInstance() 메서드 제공.
2. 구현 구조
1) 클래스 내부 구조
public class Singleton {
// 1. 자신의 타입으로 된 static 필드 생성 (단 하나의 객체 생성)
private static Singleton singleton = new Singleton();
// 2. 생성자를 private으로 선언하여 외부에서 생성자 호출 방지
private Singleton() {}
// 3. 외부에서 객체에 접근하기 위한 static 메서드 제공
static Singleton getInstance() {
return singleton;
}
}
2) 사용 방법
public class SingletonExample {
public static void main(String[] args) {
// 직접 new로 생성 불가능 (컴파일 에러 발생)
// Singleton obj1 = new Singleton();
// getInstance()를 통해서만 접근 가능
Singleton obj1 = Singleton.getInstance();
Singleton obj2 = Singleton.getInstance();
if (obj1 == obj2) {
System.out.println("같은 Singleton 객체입니다.");
} else {
System.out.println("다른 Singleton 객체입니다.");
}
}
}
- obj1 == obj2 비교 시 true, 즉 동일한 객체를 가리킴.
3. 정리
- static 필드로 단 하나의 인스턴스를 미리 생성.
- 생성자를 private으로 막아 외부에서 객체 생성 불가능.
- getInstance() 메서드를 통해서만 객체에 접근 가능.
- 프로그램 전체에서 동일한 인스턴스 사용 보장.
'Study > Java' 카테고리의 다른 글
| 정적 멤버와 static (0) | 2025.07.08 |
|---|---|
| 인스턴스 멤버와 this (0) | 2025.07.08 |
| 접근제어자 (0) | 2025.07.08 |
| 상속(Inheritance)와 다형성(Polymorphism) (0) | 2025.07.07 |
| 캡슐화(Encapsulation) (0) | 2025.07.06 |