Open Judy-999 opened 1 year ago
싱글톤 패턴은 하나의 유일한 인스턴스만 가져 공용으로 사용하는 디자인입니다. 싱글톤 패턴은 인스턴스를 호출하는 횟수에 상관없이 같은 인스턴스만 반환하고, 전역에서 사용할 수 있다는 특징이 있습니다. 코코아터치 프레임워크에서 싱글톤 패턴을 적용한 예시는 다음과 같습니다.
FileManager.default
URLSession.shared
NotificationCenter.default
UserDefaults.standard
UIApplication.shared
class Singleton {
static let shared = Singleton()
private init(){}
}
static let
으로 타입 프로퍼티로 자신의 인스턴스를 가지도록 하고, 이니셜라이저를 private
로 해서 외부에서 호출되지 않게 하여 싱글톤 패턴을 적용한 클래스를 만들 수 있습니다.
하나의 인스턴스로 메모리를 공유하여 메모리 절약이 되고 데이터 공유가 쉽다는 장점이 있지만, 싱글톤 클래스가 너무 많은 일을 하면 결합도가 높아져 수정과 테스트가 어려워질 수 있다는 문제도 있습니다.
UIApplication
, NotificationCenter
, URLSession
, URLCache
혹시 다른 클래스에서 NSCache 타입의 변수를 선언하면 클래스가 메모리에서 해제되거나 초기화될 때 캐시도 초기화되므로 싱글톤을 통해서 실수로 초기화하는 일이 없게 하기 위해서
NotificationCenter.default를 사용하면 앱 전체에서 해당 알림을 광범위하게 관찰할 수 있기 때문에 defualt는 Singleton 패턴으로 구현되어 있다.
UIApplication은 앱에서 하나만 존재해야 하기 때문에 싱글톤 패턴으로 구현되어 있다.
장점
단점
꼬리질문