면접 질문 중 단골 질문인 Singleton
vs Static
을 정리해보자!
싱글 톤 패턴은 하나의 객체만을 생성하기를 제한하는 패턴으로 타입 변수로 인스턴스를 하나 가지고 init
생성자는 private
로 제한해버리는 패턴입니다
class UserInfo {
static let shared = UserInfo()
var id: String?
var password: String?
var name: String?
private init() { }
}
Instance
만 생성하므로 메모리 낭비를 방지할 수 있다Instance
로 다른 클래스들과 자원 공유가 쉬움lazy
키워드를 사용하지 않아도 지연 연산된다. 그리고 지연 저장 프로퍼티와 다르게 다중 스레드 환경에서 단 한번만 초기화된다는 보장도 받는다.SingleTon Instance
가 너무 많은 일을 하거나, 많은 데이터를 공유시킬 경우 다른 클래스의 Instance
들 간 결합도가 높아져 "개방-폐쇄" 원칙을 위배한다(객체 지향 설계 원칙에 어긋남)class UserInfo {
static var id: String?
static var password: String?
static var name: String?
}
Method Dispatch
에 있어서 Static Dispatch
를 적용된다