[swift] Singleton 디자인 패턴

Singleton은 소프트웨어 디자인 패턴 중 하나로, 하나의 클래스가 오직 하나의 인스턴스만을 갖도록 보장하는 패턴이다. 이 패턴을 사용하면 특정 클래스의 인스턴스가 오직 하나만 생성되고, 어디서든 전역적인 접근점을 통해 접근할 수 있다.

Singleton 이유

Singleton 패턴은 전역적인 데이터를 사용해야 할 때 유용하다. 예를 들어, 애플리케이션의 설정 정보, 네트워크 연결 객체, 로깅 서비스, 데이터베이스 연결 등과 같이 오직 하나의 인스턴스가 필요한 경우에 활용된다.

Singleton 구현 방법

class Singleton {
    static let shared = Singleton()
    
    private init() {
        // 초기화 코드
    }
}

여기서 shared 변수는 클래스의 타입 프로퍼티로, 클래스 인스턴스가 생성될 때 한 번만 초기화된다. 이렇게 함으로써 Singleton 클래스의 인스턴스는 shared를 통해 전역적으로 접근할 수 있게 된다.

Singleton 사용 방법

Singleton 객체에 접근할 때에는 다음과 같이 shared 프로퍼티를 사용하면 된다.

let mySingleton = Singleton.shared

이렇게 함으로써 Singleton 패턴을 사용하여 오직 하나의 인스턴스만을 생성하고, 어디서든 전역적으로 접근할 수 있게된다.

위와 같이 Singleton 패턴을 적용하면 다수의 객체가 생성될 경우 발생할 수 있는 메모리 낭비나 자원 낭비를 줄일 수 있으며, 전역 상태를 유지하기에 용이하다.

결론

Singleton은 오직 하나의 인스턴스만을 생성하고, 어디서든 전역적으로 접근할 수 있도록 하는 디자인 패턴이다. 전역 상태를 유지해야 하는 경우에 유용하게 활용될 수 있으며, 이를 통해 메모리 및 자원을 효율적으로 관리할 수 있다.

이렇게하여 확장성을 고려하여 코딩하는 것이 매우 중요하다.

참고 자료