[Swift] 싱글톤 패턴, Singleton Pattern

Wody·2021년 3월 23일
0

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개의 댓글