싱글톤 패턴을 따르는 클래스는 생성자(인스턴스)가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고, 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다.
좀 더 풀어서 이야기 하면,
최초 한번만 메모리에 할당되고(static) 할당된 메모리에 인스턴스를 만들어 사용함.
class Singleton {
static let shared = Singleton()
private init() {}
}
상황 : 헬스장 회원의 출입 QR 코드를 만드는 어플리케이션입니다.
class UserQRcode {
static let shared = UserQRcode()
var name: String?
var userNumber: Int?
var dDay: Int?
private init() { }
}
클래스 내부의 static 상수 shared 프로퍼티를 통해 싱글톤 구조 완성,
init(이시셜라이저)를 private 접근제어 함으로서 Instance 추가 생성을 방지
UserQRcode.shared.name = "홍길동"
UserQRcode.shared.userNumber = 1
UserQRcode.shared.dDay = 365
print("\(UserQRcode.shared.name)님의 남은 기간은 \(UserQRcode.shared.dDay)입니다")
>> Optional("홍길동")님의 남은 기간은 Optional(365)입니다