Notice
Recent Posts
Recent Comments
Link
YTCW
java singleton 본문
싱글톤 패턴
소프트웨어 설계 패턴 중하나이고
클래스의 인스턴스가 하나만 생성되도록 보장해준다
해당 클래스의 인스턴스에 전역적인 접근을 제공하지만 일관된 상태를 유지해줌
- static 필드:
- private static Singleton instance;는 Singleton 클래스의 인스턴스를 보관하는 정적 필드입니다. static으로 선언되었기 때문에 클래스 로딩 시점에 하나의 인스턴스만 존재하게 됩니다.
- private 생성자:
- private Singleton()는 외부에서 클래스의 인스턴스를 직접 생성하지 못하도록 막습니다. 이를 통해 다른 곳에서 new Singleton()을 호출하지 못하게 합니다.
- static 메서드 getInstance():
- public static Singleton getInstance() 메서드는 싱글턴 인스턴스를 반환하는 유일한 방법입니다.
- 인스턴스가 null일 때만 새로운 인스턴스를 생성하고, 그렇지 않으면 기존 인스턴스를 반환합니다.
- main 메서드에서의 테스트:
- Singleton.getInstance()를 두 번 호출하여 두 객체가 같은지를 확인하는 테스트를 추가했습니다. 출력 결과는 true로, 두 객체는 동일한 인스턴스임을 보여줍니다.
싱글턴 패턴의 장단점:
- 장점:
- 자원의 중복 생성을 방지: 싱글턴 패턴을 사용하면 자원을 효율적으로 관리할 수 있으며, 메모리 사용을 최적화할 수 있습니다.
- 글로벌 인스턴스: 전역에서 인스턴스에 접근할 수 있으므로 특정 클래스의 상태를 어디서나 쉽게 공유할 수 있습니다.
- 단점:
- 테스트가 어려움: 싱글턴 패턴은 전역 상태를 유지하기 때문에 유닛 테스트 시 서로 다른 상태를 가지는 여러 객체를 생성하는 것이 어렵습니다.
- 멀티스레드 환경에서의 문제: 멀티스레드 환경에서는 인스턴스가 중복 생성될 가능성이 있기 때문에 synchronized 키워드를 사용하여 동기화를 처리해야 할 때도 있습니다.
public class Singleton {
// static 필드로 Singleton 인스턴스를 선언
private static Singleton instance;
// private 생성자: 외부에서 직접 인스턴스 생성 불가
private Singleton() {
}
// 전역 접근을 제공하는 static 메서드
public static Singleton getInstance() {
if (instance == null) { // 인스턴스가 없을 때만 생성
instance = new Singleton();
}
return instance;
}
public static void main(String[] args) {
// Singleton 패턴으로 객체 생성
Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
// 두 인스턴스가 동일한지 확인
System.out.println(singleton1 == singleton2); // true 출력 (같은 인스턴스)
}
}
'java' 카테고리의 다른 글
java Lambda (1) | 2024.09.13 |
---|---|
java 내부 클래스 (0) | 2024.09.13 |
java lombok (0) | 2024.09.10 |
java MVC 패턴 (2) | 2024.09.10 |
java Map (0) | 2024.09.10 |