본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다.
싱글톤 Singleton
장단점
장점 | 단점 |
▪️ 하나의 인스턴스만을 사용해 메모리 낭비를 줄일 수 있다. ▪️ 싱글톤 인스턴스는 전역 인스턴스이기 때문에 다른 클래스와의 자원 공유가 쉽고 접근이 쉽다. ▪️ Swift에서는 static let을 통해 싱글톤을 구현해 thread-safe하다. |
▪️ 서브클래스를 정의할 수 없다. ▪️ 싱글톤 인스턴스가 너무 많은 일을 하거나 너무 많은 데이터를 공유할 경우 결합도가 높아진다. ▪️ 많은 테스트 프레임워크들이 모의 객체들을 생성할 때 상속에 의존하기 때문에 유닛 테스트하기가 어렵다 ▪️ 클래스의 작업을 처리하는 역할 뿐 아니라 자신의 인스턴스에 대한 접근을 관리하는 역할에 대해서도 책임을 져야해서 단일 책임원칙을 위반한다. |
Swift에서는 static let을 통해 싱글톤을 구현해 thread-safe하다.
데이터 타입이나 static 메서드가 여러개의 스레드에서 사용될 때, 얼마나 많은 스레드들이 실행되든간에 잘 작동될 때 그 타입이나 메서드를 thread-safe하다고 한다.
swift에서는 싱글톤을 구현할 때 static let을 사용하기 때문에 thread-safe하다고 볼 수 있다.
static을 사용함으로써 전역적으로 싱글톤을 사용할 수 있게 되는데, 그 부작용으로 멀티스레드에 노출이 되게 된다.
그래서 let이라는 키워드를 사용함으로써 초기화에 있어서 thread-safe한 상황을 만들어주는 것이다.
참조
http://web.mit.edu/6.005/www/fa15/classes/20-thread-safety/
https://lietenant-k.tistory.com/42
'YAGOM CAREER STARTER' 카테고리의 다른 글
[TIL] 20230112: Closures (0) | 2023.01.13 |
---|---|
[TIL] 20230110: Protocol1 (0) | 2023.01.11 |
[토요스터디A반] 20230107: Property Observer, MVC, Notification Center (0) | 2023.01.07 |
[TIL] 20230106: Modality/Navigation (0) | 2023.01.06 |
[자료구조스터디] 20230104: Linked List (0) | 2023.01.06 |