[swift]Singleton Pattern

okstring·2021년 2월 7일
0

singleton

인스턴스를 하나만 생성하게 해 언제 어디서근 참조할 수 있도록 하는 패턴

class Singleton {
    static let shared = Singleton()
    var age: Int = 0
    private init() { }
    
}

var singletonA = Singleton.shared
var singletonB = Singleton.shared

singletonB.age = 75
print(singletonA.age) // 75
print(singletonB.age) // 75

// 'Singleton' initializer is inaccessible due to 'private' protection level
var foo = Singleton()
  1. shared라는 static property를 선언
  2. 추가 인스턴스 생성을 방지하기 위해 init을 private로 제한
    • 여기서 public으로 변경하면 FileManager처럼 새로 인스턴스를 만들 수 있다. Background thread에서 사용한다면 이 방법을 권장하고 이런 패턴을 singleton plus라고 한다 참고

singleton 특징

singleton은 논리적으로 두 개 이상의 인스턴스가 있을 때 맞지 않을 경우 쓰는 패턴이기도 하다.

하지만 static하기 때문에 남용해서 사용하기 쉬운 패턴이기 때문에 주의하고 의식해가며 써보도록 하자


reference

http://throughkim.kr/2019/09/04/swift-singleton/

https://www.raywenderlich.com/477-design-patterns-on-ios-using-swift-part-1-2

profile
step by step

0개의 댓글