싱글톤 디자인

Judy·2022년 4월 30일
0

iOS

목록 보기
5/28

싱글톤 클래스

특정 용도로 객체를 하나만 생성하여 공용으로 사용하는 디자인

싱글톤 클래스는 애플리케이션이 요청한 횟수에 상관없이 동일한 인스턴스를 반환한다.

보통의 클래스는 원하는 만큼 인스턴스를 생성할 수 있는 반면, 싱글턴 클래스는 프로세스 당 하나의 인스턴스만 존재한다.

싱글톤은 일반적인 서비스나 리소스를 제공하는 클래스처럼 단일 제어가 필요할 때 사용된다.

factory method를 통해 전역 인스턴스를 얻는다.

처음 요청될 때 인스턴스가 생성되고 이후로는 다른 인스턴스를 생성할 수 없게 한다.

싱글톤 클래스는 호출한 개체가 인스턴스를 복사, 유지 또는 해제를 방지한다.

자신만의 싱클톤 클래스를 생성할 수 있다.

싱글톤 사용 예시

CoCoa 프레임워크의 클래스

  • NSFileManager
  • NSWorkspace

UIKit

  • UIApplication
  • UIAccelerometer

factory method의 이름은 컨벤션에 따라 sharedClassTyp 형식을 갖는다.
ex) CoCoa 프레임워크

  • sharedFileManager
  • sharedColorPanel
  • sharedWorkspace

let application = UIApplication.shared

싱글톤 생성

간단하게 static 타입의 프로퍼티를 이용해 싱글톤을 만들 수 있다.

static type property
여러 스레드에서 동시 접근 시 한 번만 지연 초기화 됨

class Singleton {
    static let shared = Singleton()
}

초기화 외에 추가 설정이 필요한 경우 클로저의 호출 결과를 전역 상수(static let)로 할당할 수 있다.

class Singleton {
    static let shared: Singleton = {
        let instance = Singleton()
        // setup code
        return instance
    }()
}

싱글톤의 장단점

장점

  • 하나의 인스턴스만 생성하여 메모리 공유할 수 있다
  • 싱클톤 인스턴스는 전역 인스턴스라 다른 클래스와 데이터를 공유하기 쉽다

단점

  • 싱글톤 인스턴스가 너무 많은 일을 하거나, 많은 데이터를 공유하면 다른 클래스의 인스턴스와 결합도가 높아짐
  • 수정과 테스트가 어려움

싱글톤의 사용

  • 인스턴스가 하나만 존재하는 것을 보장하고 싶을 때

Apple Developer-Singleton
Managing a Shared Resource Using a Singleton

profile
iOS Developer

0개의 댓글