[iOS] 싱글턴 패턴(Singleton Pattern)

강치우·2024년 2월 11일
1

수입푸드

목록 보기
7/13

싱글턴 패턴(Singleton Pattern)

싱글턴 패턴은 소프트웨어 설계 패턴 중 하나로, 클래스의 인스턴스가 오직 하나만 생성되도록 보장합니다.

이 패턴은 전역적으로 접근 가능한 단일 인스턴스를 제공하여, 앱 내에서 공유 리소스에 대한 중앙 집중적 관리를 가능하게 합니다.

예를 한번 들어보죠,

우리 집 고양이가 있어요. 이름은 "휴지"라고 합시다.
이 휴지가 특별한 이유는 우리 집에 단 하나뿐이기 때문이죠.
어디서나 휴지를 찾으면 그 휴지는 바로 우리 집 고양이, 유일무이한 존재입니다.

이렇듯, 싱글턴 패턴도 우리 집 휴지처럼 앱 전체에서 단 하나만 존재해야 하는 특별한 패턴입니다.


싱글턴 패턴, 언제 사용해야 하나요?

싱글턴 패턴은 마치 냉장고처럼, 모두가 공유해야 하는 리소스나 서비스에 적합합니다.

  • 공유 리소스 접근: 냉장고에 있는 김치처럼, 데이터베이스 연결이나 네트워크 세션 같은 것들이 여기에 해당됩니다.

  • 설정 정보 관리: 우리 집 냉장고 온도 설정 같이, 앱 전체에 걸쳐 공통적으로 사용되는 설정 정보를 관리할 때 유용합니다.

  • 네트워크 통신: 인터넷이 우리 집에서 하나뿐이듯, 앱에서도 하나의 네트워크 통신 객체로 모든 것을 처리할 수 있습니다.

  • 사용자 세션 관리: 마치 집안에 있는 사람들을 체크하는 것처럼, 사용자의 로그인 상태를 전역적으로 관리합니다.

  • 로깅: 우리 집 CCTV가 모든 움직임을 기록하듯, 앱의 모든 로그를 한 곳에서 관리할 수 있습니다.


싱글턴 패턴, 어떻게 만드나요?

싱글턴 패턴을 만드는 건, 냉장고에 '휴지 전용'이라고 스티커 붙이는 것만큼 간단합니다.

간단하게 코드로 예시를 들어보자면,

class CatSingleton {
    static let shared = CatSingleton()
    private init() {}
    
    func miaow() {
        print("야옹~")
    }
}
  1. 클래스 내에 static 키워드를 사용하여 싱글턴 인스턴스를 선언

  2. 외부에서 인스턴스를 생성하지 못하도록 생성자를 private으로 설정


이렇게 객체를 만들어 주면 이제 독립적인 하나의 휴지가 되었습니다. 이제 휴지를 부를 땐 언제든

CatSingleton.shared 를 통해 앱 전체 어디서나 휴지의 야옹을 들을 수 있습니다.


사용할 때 주의사항은?

싱글턴 패턴을 남발하면 마치 집안에 고양이가 너무 많아져서 아무 곳에나 야옹 소리가 울려퍼지는 것과 같습니다.

메모리 사용, 전역 상태 관리, 코드의 유연성이 떨어질 수 있으니 주의해야 합니다.

휴지가 우리 집에서만 유일한 것처럼, 정말 필요한 곳에서만 싱글턴 패턴을 사용해야 합니다.


마무리하며

싱글턴 패턴은 편하게 사용할 수 있는 강력한 도구지만, 모든 상황에 편리하게 사용될 수 있는 건 아닙니다.

휴지가 우리 집에서 행복하게 지내듯, 싱글턴도 적절히 사용했을 때 그 진가를 발휘합니다.

싱글턴의 사용은 코드의 복잡성 증가와 테스트 어려움을 초래할 수 있으므로, 사용 전에 그 필요성과 대안을 면밀히 검토해야 합니다.

profile
자허블을 좀 더 좋아하긴 합니다.

0개의 댓글