[Swift] Singleton vs Static

Youngwoo Lee·2021년 11월 11일
0

스위프트 문법

목록 보기
2/4
post-thumbnail

면접 질문 중 단골 질문인 Singleton vs Static 을 정리해보자!

싱글 톤(singleton)

싱글 톤 패턴은 하나의 객체만을 생성하기를 제한하는 패턴으로 타입 변수로 인스턴스를 하나 가지고 init 생성자는 private 로 제한해버리는 패턴입니다

class UserInfo {
	static let shared = UserInfo()

	var id: String?
   	var password: String?
   	var name: String?

	private init() { }
}

싱글톤의 장점

  • 한번의 Instance만 생성하므로 메모리 낭비를 방지할 수 있다
  • 전역 Instance로 다른 클래스들과 자원 공유가 쉬움
  • 저장 타입 프로퍼티 같은 경우는 lazy 키워드를 사용하지 않아도 지연 연산된다. 그리고 지연 저장 프로퍼티와 다르게 다중 스레드 환경에서 단 한번만 초기화된다는 보장도 받는다.

싱글톤의 단점

  • SingleTon Instance가 너무 많은 일을 하거나, 많은 데이터를 공유시킬 경우 다른 클래스의 Instance들 간 결합도가 높아져 "개방-폐쇄" 원칙을 위배한다(객체 지향 설계 원칙에 어긋남)
  • 이니셜라이저를 통해서 의존성 주입을 하지 못해서, test doubles를 통한 테스트가 어렵다

Static

class UserInfo {
	static var id: String?
   	static var password: String?
   	static var name: String?
}
  • 타입 변수, 타입 메서드로 지정하면 인스턴스를 생성하지 않아도 된다
  • Singleton Class는 Protocol을 구현 할 수 있지만, Static은 구현 할 수 없음.
  • Method Dispatch에 있어서 Static Dispatch를 적용된다
profile
iOS Developer Student

0개의 댓글