[swift] 싱글톤 패턴
싱글톤은 애플리케이션 전체에 걸쳐 하나의 인스턴스만 생성되도록 하는 디자인 패턴입니다. 이 패턴은 하나의 객체만을 사용하여 전역 상태를 유지하거나 특정 작업을 위해 공통된 리소스에 접근하는 경우 유용합니다.
싱글톤의 장점
- 메모리를 절약할 수 있습니다. 여러 객체 인스턴스를 생성하는 것보다 한 개의 인스턴스를 사용하는 편이 메모리를 더 효율적으로 관리할 수 있습니다.
- 전역 상태를 유지할 수 있습니다. 여러 객체 간에 데이터를 주고 받지 않고 한 객체의 변경 사항을 다른 객체에서 즉시 알 수 있습니다.
- 개체의 인스턴스화를 제어할 수 있습니다. 단일 객체를 사용하여 인스턴스 생성 및 초기화를 중앙 집중화하여 일관된 방법으로 제어할 수 있습니다.
싱글톤 구현 방법
class MySingleton {
static let shared = MySingleton()
private init() {}
}
위 예제는 Swift에서의 싱글톤 패턴의 구현 예시입니다. shared
라는 정적 상수를 사용하여 한 번만 인스턴스를 초기화하고, private init
을 사용하여 외부에서 해당 객체를 생성하는 것을 막습니다.
주의 사항
- 다중 스레드 환경에서 안전한지 여부를 고려해야 합니다. 여러 스레드에서 동시에 해당 인스턴스에 접근하는 경우 의도치 않은 동작이 발생할 수 있습니다. 이러한 상황을 고려하여 싱글톤 인스턴스에 대한 동기화를 고려해야 합니다.
- 싱글톤은 전역 상태를 유지하므로 의존성 주입, 유닛 테스트 등에 영향을 줄 수 있습니다. 싱글톤을 사용할 때에는 이러한 부분도 고려하여 설계해야 합니다.
결론
싱글톤은 애플리케이션 전역에서 유일한 객체의 인스턴스를 제공하는 패턴으로, 메모리를 절약하고 전역 상태를 유지하기 위해 사용됩니다. 이러한 디자인 패턴의 장점과 함께 주의 사항을 고려하여 구현할 경우 효과적으로 사용할 수 있습니다.
참고자료: Apple Developer Documentation