-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
싱글톤 패턴(Singleton Pattern)이란?
1. 개념
- 싱글톤 패턴은 특정 클래스의 인스턴스를 오직 하나만 생성하도록 제한하고, 어디서든 이 인스턴스에 접근할 수 있도록 하는 디자인 패턴입니다.
- 애플리케이션 전역에서 공통된 리소스나 데이터를 관리할 때 사용됩니다.
2. 특징
- 인스턴스가 단 하나만 존재하므로 메모리 낭비를 방지합니다.
- 전역 상태를 관리하므로 데이터 일관성을 유지할 수 있습니다.
- *생성자(private)**를 숨기고, 클래스 내부에서 인스턴스를 생성하여 관리합니다.
3. 사용 예시
- iOS에서 사용되는 싱글톤 패턴:
UserDefaults:- 앱 전역에서 사용자 기본 설정 데이터를 관리.
URLSession:- 네트워크 요청을 위한 공통 인스턴스 관리.
NotificationCenter:- 앱 전역 이벤트를 관리하고 알림을 보내기 위한 공통 객체.
- CoreData의
persistentContainer:- 데이터베이스 관리 인스턴스.
4. iOS에서 싱글톤 구현 방법
final class SingletonExample {
// 1. 싱글톤 인스턴스
static let shared = SingletonExample()
// 2. private 생성자: 외부에서 새로운 인스턴스 생성 방지
private init() {}
// 3. 예시 메서드
func doSomething() {
print("Singleton is working!")
}
}
// 싱글톤 사용 예시
SingletonExample.shared.doSomething()5. 장점
- 메모리 절약:
- 하나의 인스턴스를 공유하므로 불필요한 객체 생성을 방지합니다.
- 전역 접근성:
- 동일한 인스턴스를 어디서든 호출하여 사용할 수 있습니다.
- 데이터 일관성:
- 인스턴스가 하나뿐이므로 상태 변경을 쉽게 관리할 수 있습니다.
6. 단점
- 테스트 어려움:
- 전역 상태로 인해 유닛 테스트나 의존성 주입(DI)이 어려울 수 있습니다.
- 의존성 증가:
- 클래스 간 결합도가 높아질 가능성이 있습니다.
- 멀티쓰레드 환경:
- 동시 접근 시 데이터 무결성을 보장하려면 추가적인 처리가 필요합니다.
7. 사용 사례
- 애플리케이션 전체에서 하나의 인스턴스만 필요할 때:
- 설정 관리 (
UserDefaults) - 네트워크 관리 (
URLSession) - 로그 관리 (Logging Service)
- 데이터베이스 연결 관리
- 설정 관리 (
8. 싱글톤 패턴 주의사항
- 지나친 사용 금지:
- 너무 많은 싱글톤은 코드 가독성과 유지보수성을 떨어뜨립니다.
- 의존성 주입(DI)과의 조화:
- 싱글톤은 DI와 충돌할 수 있으므로 필요에 따라 적절히 병행 사용합니다.
Metadata
Metadata
Assignees
Labels
No labels