싱글턴은 ‘특정 클래스의 인스턴스가 오직 하나임을 보장하는 객체’를 의미합니다. 싱글턴은 애플리케이션이 요청한 횟수와는 관계없이 이미 생성된 같은 인스턴스를 반환합니다. 즉, 애플리케이션 내에서 특정 클래스의 인스턴스가 딱 하나만 있기 때문에 다른 인스턴스들이 공유해서 사용할 수 있습니다.

Untitled

주의할 점

싱글턴 디자인 패턴은 애플리케이션 내의 특정 클래스의 인스턴스가 하나만 존재하기 때문에 객체가 불필요하게 여러개 만들어질 필요가 없는 경우에 많이 사용합니다. 예를들면 환경설정, 네트워크 연결처리, 데이터 관리 등이 있습니다. 하지만 멀티 스레드 환경에서 동시에 싱글턴 객체를 참조할 경우 원치 않은 결과를 가져올 수 있습니다. 어떤 디자인 패턴을 활용하더라도 항상 긍정적인 면과 위험성을 함께 고려하여 활용하세요.

Singleton

[Swift] Singleton vs Static

[Swift] 싱글톤 패턴(Singleton Pattern)


<aside> 💡 싱글톤, 이름으로부터 알 수 있듯 어떤 것을 ‘하나’로 유지한다는 느낌이 강하게 온다. 수학적 용어로는 한원소 집합을 표현할 때 사용되는 단어다. 말그대로 원소가 하나만 있는…

위키피디아에 따르면 Singleton을 이렇게 소개하고 있다.

The singleton pattern is a software design pattern that restricts the instantiation of a class to one “single” instance.

한 개의 클래스로 만드는 객체는 단 한개여야만 한다는 규칙을 가진 디자인 패턴이다.

프로그램 전체에 단 하나의 전역 객체를 만들어놓고 여기저기서 이 하나의 객체에만 접근할 수 있도록 하면 된다.

</aside>

특정 용도로 객체를 하나만 생성하여,공용으로 사용하고 싶을 때 사용하는 디자인 유형

class UserInfo {
    var id: String?
    var password: String?
    var name: String?
}

//A ViewController
let userInfo = UserInfo()
userInfo.id = "Sodeul"

//B ViewController
let userInfo = UserInfo()
userInfo.password = "123"

//C ViewController
let userInfo = UserInfo()
userInfo.name = "Sodeul"

만약, 이런 식으로 A, B, C ViewController에서 각각 UserInfo 객체를 만들어서 저장 하면,한 Instance에 모든 정보가 저장되어야 하는데 각 instance에 모든 정보가 저장이 된다.

인스턴스는 참조 타입이기 때문에, User Info 인스턴스를 한번 생성한 후,

이 인스턴스를 A->B->C로 필요할 때마다 참조로 넘겨줄 수도 있긴 하지만

(귀찮고 지저분한 방법) 인스턴스는 참조 타입이기 때문에, User Info 인스턴스를 한번 생성한 후,

이 인스턴스를 A->B->C로 필요할 때마다 참조로 넘겨줄 수도 있긴 함

이 클래스에 대한 Instance는 최초 생성될 때 딱 한번만 생성해서 전역에 두고, 한 Instance에 어디 클래스에서든 접근 가능하게 하는 것