싱글톤 패턴이란, 특정 클래스의 인스턴스가 앱 전체에서
단 하나만 존재하며, 앱 전역에서 모두 접근할 수 있도록 하는 디자인 패턴임
즉!!
개별적인 인스턴스를 생성할 필요가 없으며
단 하나의 인스턴스를 재활용해서 여러 곳에서 활용할 때
싱글톤 패턴을 활용하기 적절함!
전반적으로
위치 서비스, 로깅 서비스, UserDefaults 전체 관리 클래스,
네트워크 중복 로직 관리 클래스 등을 싱글톤 클래스로 활용하기에 적합함!
전반적으로 Manager라는 키워드를 붙여서 네이밍 하는데
import Foundation
// 싱글톤 클래스.
class Deasung {
// shared 를 통해서 싱글톤 접근.
static let shared = Deasung()
var mbti = "ESFJ"
var age = 24
// 클래스 생성 자체를 막아버리기 위해 init 을 private 으로 선언.
private init() {}
func printInfo() {
print("[Deasung Info]")
print("mbti: \(mbti)")
print("age: \(age)")
}
}
// shared 를 통해서 싱글톤 클래스 사용.
Deasung.shared.printInfo()
Deasung.shared.mbti = "ENFJ"
Deasung.shared.age = 26
Deasung.shared.printInfo()
static let shared라는 싱글톤 접근점을 선언
private init() { }으로 클래스를 생성하지 못하도록 막음. 싱글톤의 인스턴스는
오직 shared 객체 하나만 살아있도록 구현.
static 키워드가 붙으면, 가장 처음 호출될 때 메모리에 올라감.
따라서 Adam.shared가 앱이 종료될 때까지 한번도 불리지 않는다면
메모리에 Daesung 싱글톤은 한번도 올라가지 않게 됨.
Daesung.shared가 불리고 난 뒤에는 앱이 종료될때까지 메모리 위에 올라가 있는 상태. 그 뒤
Daesung.shared를 호출하는 모든 부분은 단 하나의 인스턴스를 바라보고 접근하게 됨.
따라서 싱글톤 패턴을 사용하려면, 메모리적으로 손해를 보지 않는지 반드시 고려해야 함.
'Swift' 카테고리의 다른 글
다시 한 번 돌아보는 제네릭 (0) | 2024.07.30 |
---|---|
Swift MVVM (0) | 2024.07.19 |
(CS) 네트워크 대비 지식쌓기 (2/2) (0) | 2024.07.12 |
Swift UserDefaults (0) | 2024.07.11 |
Swift CoreData (0) | 2024.07.10 |