주요 특징
- 인스턴스가 하나만 존재: 클래스에서 단 하나의 인스턴스만 생성되어야 합니다.
- 글로벌 접근: 싱글톤 인스턴스에 전역에서 접근할 수 있어야 합니다.
- 게으른 초기화(Lazy Initialization): 인스턴스가 필요할 때까지 생성하지 않고, 최초 접근 시에만 인스턴스를 생성하는 방식입니다.
장점
- 시스템 전체에서 공유 자원을 효율적으로 관리할 수 있습니다. (예: 데이터베이스 연결, 로그 처리 등)
- 여러 인스턴스가 존재할 필요가 없는 경우, 메모리 낭비를 줄일 수 있습니다.
- 객체 간 동기화 문제가 해결될 수 있습니다. (단일 인스턴스 사용으로 경쟁 조건을 예방)
단점
- 싱글톤 패턴은 전역 상태를 가지므로, 프로그램의 결합도가 높아질 수 있습니다.
- 멀티스레드 환경에서 안전하지 않을 수 있으므로 동기화 처리가 필요합니다.
- 테스트가 어려워질 수 있으며, 유연성이 떨어질 수 있습니다.
public class Singleton {
// 유일한 인스턴스를 저장할 정적 변수
private static Singleton instance;
// private 생성자를 통해 외부에서 인스턴스 생성 불가
private Singleton() {}
// 싱글톤 인스턴스를 반환하는 메서드
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton(); // 최초 호출 시에만 인스턴스 생성
}
return instance;
}
}
'CS' 카테고리의 다른 글
[React Native] Bridge ( 브릿지 ) (0) | 2024.11.05 |
---|---|
[Basic] Session & Cookie (1) | 2024.10.07 |
[Basic] 프론트엔드 XSS 보안 (0) | 2024.10.02 |
[Basic] Client Side Rendering vs Sever Side Rendering (2) | 2024.09.26 |
[Basic] SPA ( Single Page Application ) (2) | 2024.09.25 |