특정 용도로 객체를 하나만 생성하여 공용으로 사용하는 디자인
싱글톤 클래스는 애플리케이션이 요청한 횟수에 상관없이 동일한 인스턴스를 반환한다.
보통의 클래스는 원하는 만큼 인스턴스를 생성할 수 있는 반면, 싱글턴 클래스는 프로세스 당 하나의 인스턴스만 존재한다.
싱글톤은 일반적인 서비스나 리소스를 제공하는 클래스처럼 단일 제어가 필요할 때 사용된다.
factory method를 통해 전역 인스턴스를 얻는다.
처음 요청될 때 인스턴스가 생성되고 이후로는 다른 인스턴스를 생성할 수 없게 한다.
싱글톤 클래스는 호출한 개체가 인스턴스를 복사, 유지 또는 해제를 방지한다.
자신만의 싱클톤 클래스를 생성할 수 있다.
factory method의 이름은 컨벤션에 따라 sharedClassTyp
형식을 갖는다.
ex) CoCoa 프레임워크
let application = UIApplication.shared
간단하게 static 타입의 프로퍼티를 이용해 싱글톤을 만들 수 있다.
static type property
여러 스레드에서 동시 접근 시 한 번만 지연 초기화 됨
class Singleton {
static let shared = Singleton()
}
초기화 외에 추가 설정이 필요한 경우 클로저의 호출 결과를 전역 상수(static let
)로 할당할 수 있다.
class Singleton {
static let shared: Singleton = {
let instance = Singleton()
// setup code
return instance
}()
}
Apple Developer-Singleton
Managing a Shared Resource Using a Singleton