본문 바로가기
YAGOM CAREER STARTER

[TIL] 20230109: Singleton

by Rhode 2023. 1. 10.

본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다.


싱글톤 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/

 

Reading 20: Thread Safety

 

web.mit.edu

https://lietenant-k.tistory.com/42

 

[Swift] Singleton과 Thread-Safe

진행하고 있는 프로젝트에서 여러 개의 뷰 컨트롤러가 유저의 아이디와 닉네임을 사용해야하는 상황이 있었다. 각 뷰 컨트롤러 클래스에 유저의 아이디와 닉네임을 저장하는 프로퍼티를 정의

lietenant-k.tistory.com