[Swift] 싱글톤 패턴, Singleton Pattern

Wody·2021년 3월 23일

Singleton Pattern

싱글톤 패턴을 따르는 클래스는 생성자(인스턴스)가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고, 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다.

좀 더 풀어서 이야기 하면,
최초 한번만 메모리에 할당되고(static) 할당된 메모리에 인스턴스를 만들어 사용함.

싱글톤 패턴은 언제 사용되어야 하는가?

  • 특정 클래스의 인스턴스에 접근할 때 항상 동일한 인스턴스를 사용해야 하는 경우
  • 한 번 생성되었다면 프로그램이 종료될 때 까지 항상 메모리에 있어야 하는 경우
  • 객체가 어플리케이션에서 유일하게 하나만 필요할 경우
  • UIApplication, AppDelegate 등

기본 틀

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 접근

UserQRcode.shared.name = "홍길동"
UserQRcode.shared.userNumber = 1
UserQRcode.shared.dDay = 365

print("\(UserQRcode.shared.name)님의 남은 기간은 \(UserQRcode.shared.dDay)입니다")
>> Optional("홍길동")님의 남은 기간은 Optional(365)입니다

0개의 댓글