한 클래스에 대한 인스턴스(Instance)를 최초로 생성될 때 한번만 생성해 전역에 두고 이후로 이 인스턴스만 접근 가능하게 하는 것
싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴이다.
class NormalPet {
var type: String = "짹짹이"
}
let bird = NormalPet()
let cat = NormalPet()
cat.type = "야옹이"
let dog = NormalPet()
dog.type = "멍멍이"
print(bird.type) // 짹짹이
print(cat.type) // 야옹이
print(dog.type) // 멍멍이
하나하나 서로 다른 인스턴스가 만들어져서 type의 값이 다르게 나온다.
class SingletonPet {
static let shared = SingletonPet()
var type: String = "짹짹이"
private init() {}
}
let bird = SingletonPet.shared
let cat = SingletonPet.shared
cat.type = "야옹이"
let dog = SingletonPet.shared
dog.type = "멍멍이"
print(bird.type) // 멍멍이
print(cat.type) // 멍멍이
print(dog.type) // 멍멍이
하나의 인스턴스를 사용하기 때문에 bird, cat, dog 전부 type의 값이 멍멍이로 나온다.
class SingletonPet {
static let shared = SingletonPet()
private init() {}
}
let cat = SingletonPet.shared
cat.type = "야옹이"
let dog = SingletonPet.shared
dog.type = "멍멍이"
이렇게 하나의 인스턴스를 공유할 수 있다.
장점
단점
이번 싱글톤 정리를 통해서 클래스, 객체, 인스턴스 용어들의 정의가 모호해서 이해가 쉽지 않았다. 바로 클래스, 객체, 인스턴스를 찾아서 정리를 해봐야겠다.
참조
https://babbab2.tistory.com/66
https://www.youtube.com/watch?v=bhyCUykI4Dg
https://velog.io/@naroti/iOS-%EA%B0%9C%EB%B0%9C-Singleton-Pattern-q4k3uzgf0n