1. 목적과 활용
싱글톤 패턴은 어떤 클래스가 단 하나의 인스턴스만을 갖도록 하고, 그 인스턴스에 대한 전역적인 접근을 제공하는 디자인 패턴입니다
이는 특정 객체가 시스템 전체에서 공유되어야 하거나, 유일한 자원을 효율적으로 활용해야 하는 경우에 유용하게 쓰입니다
예를 들어, 데이터베이스 연결, 로깅, 설정 관리 등의 경우에 싱글톤 패턴이 적용될 수 있습니다
2. 싱글톤의 특징
유일한 인스턴스
싱글톤 패턴을 사용하는 클래스는 인스턴스가 하나뿐이어야 합니다
이는 private 생성자를 통해 외부에서의 객체 생성을 막고, 유일한 인스턴스를 유지함으로써 달성됩니다
전역적인 접근
어디서든지 해당 인스턴스에 접근 가능해야 합니다
이는 주로 `getInstance()`와 같은 정적 메서드를 통해 구현되며, 이 메서드를 통해 언제든지 유일한 인스턴스에 접근할 수 있습니다
3. 초기화 시점
즉시 초기화
클래스 로딩 시점에 인스턴스를 생성하는 방식입니다
단점으로는 애플리케이션이 시작될 때 무조건 인스턴스가 생성되므로, 불필요한 자원 소모가 발생할 수 있습니다
늦은 초기화
인스턴스가 필요한 시점에 생성하는 방식입니다
하지만 멀티스레딩 환경에서는 동기화 문제로부터 안정성을 보장하기 위해 추가적인 처리가 필요합니다
4. 멀티스레딩과의 대응
멀티스레딩 환경에서는 여러 스레드가 동시에 인스턴스를 생성하려는 시나리오가 발생할 수 있습니다
이를 해결하기 위해 동기화 처리가 필요하며, 이로 인한 성능 저하를 최소화하기 위해 더블 체크 락킹 등의 기법을 활용할 수 있습니다
'-- 기타 -- > 일반 개념' 카테고리의 다른 글
Dependency Injection(의존성 주입, DI)란? (0) | 2024.03.14 |
---|---|
[프로그래밍 패러다임] AOP (관점 지향 프로그래밍) (0) | 2024.03.14 |
[디자인 패턴] 팩토리 패턴(Factory Pattern) (0) | 2024.01.21 |
[CDN] Content Delivery Network(콘텐츠 전송 네트워크) (0) | 2024.01.18 |
[프로그래밍] 응집도와 결합도 (0) | 2024.01.10 |